java編程實(shí)現(xiàn)隨機(jī)數(shù)組的快速排序步驟如下:
創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供盤(pán)州企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為盤(pán)州眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
1、打開(kāi)Eclipse,新建一個(gè)Java工程,在此工程里新建一個(gè)Java類(lèi);
2、在新建的類(lèi)中聲明一個(gè)產(chǎn)生隨機(jī)數(shù)的Random變量,再聲明一個(gè)10個(gè)長(zhǎng)度的int型數(shù)組;
3、將產(chǎn)生的隨機(jī)數(shù)逐個(gè)放入到數(shù)組中;
4、利用排序算法對(duì)隨機(jī)數(shù)組進(jìn)行排序。
具體代碼如下:
import?java.util.Random;
public?class?Demo?{
public?static?void?main(String[]?args)?{
int?count?=?0;
Random?random?=?new?Random();
int?a[]?=?new?int[10];
while(count??10){
a[count]?=?random.nextInt(1000);//產(chǎn)生0-999的隨機(jī)數(shù)
count++;
}
for?(int?i?=?0;?i??a.length?-?1;?i++)?{
int?min?=?i;
for?(int?j?=?i?+?1;?j??a.length;?j++)?{
if?(a[j]??a[min])?{
min?=?j;
}
}
if?(min?!=?i)?{
int?b?=?a[min];
a[min]?=?a[i];
a[i]?=?b;
}
}
for?(int?c?=?0;?c??a.length;?c++)?{
System.out.print(a[c]?+?"?");
}
}
}
本人特地給你編的代碼\x0d\x0a親測(cè)\x0d\x0a\x0d\x0apublicclassQuickSort{\x0d\x0a\x0d\x0apublicstaticintPartition(inta[],intp,intr){\x0d\x0aintx=a[r-1];\x0d\x0ainti=p-1;\x0d\x0ainttemp;\x0d\x0afor(intj=p;jif(a[j-1]//swap(a[j-1],a[i-1]);\x0d\x0ai++;\x0d\x0atemp=a[j-1];\x0d\x0aa[j-1]=a[i-1];\x0d\x0aa[i-1]=temp;\x0d\x0a\x0d\x0a}\x0d\x0a}\x0d\x0a//swap(a[r-1,a[i+1-1]);\x0d\x0atemp=a[r-1];\x0d\x0aa[r-1]=a[i+1-1];\x0d\x0aa[i+1-1]=temp;\x0d\x0a\x0d\x0areturni+1;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublicstaticvoidQuickSort(inta[],intp,intr){\x0d\x0a\x0d\x0aif(p
參考代碼如下,可以按需求自己修改
import?java.util.Date;
public?class?SortThread?{
public?static?void?main(String[]?args)?{
//產(chǎn)生一個(gè)隨機(jī)數(shù)組
int[]?ary?=?getArray();
//啟動(dòng)冒泡排序線(xiàn)程
new?Thread(new?MaoPao(ary)).start();
//啟動(dòng)快速排序線(xiàn)程
new?Thread(new?KuaiSu(ary)).start();
}
private?static?int[]?getArray()?{
//建議數(shù)字n不要超過(guò)1百萬(wàn),十萬(wàn)左右就好了
int?n?=?(int)?(Math.random()*1000000)+11;
int[]?ary=?new?int[n];
System.out.println("n的值是"?+?n);
for?(int?i?=?0;?i??ary.length;?i++)?{
ary[i]?=?(int)?(Math.random()*100000);
}
return?ary;
}
}
//冒泡排序
class?MaoPao?implements?Runnable?{
int[]?ary;
public?MaoPao(int[]?ary)?{
this.ary?=?ary;
}
@Override
public?void?run()?{
long?st?=?System.currentTimeMillis();
System.out.println(new?Date()?+?"冒泡排序線(xiàn)程:開(kāi)始執(zhí)行排序");
for?(int?i?=?0;?i??ary.length?-?1;?i++)?{
for?(int?j?=?0;?j??ary.length?-?i?-?1;?j++)?{
if?(ary[j]??ary[j?+?1])?{
int?temp?=?ary[j];
ary[j]?=?ary[j?+?1];
ary[j?+?1]?=?temp;
}
}
}
long?et?=?System.currentTimeMillis();
System.out.println(new?Date()?+?"冒泡排序線(xiàn)程完成排序,耗費(fèi)時(shí)間"?+?(et?-?st)?+?"毫秒");
for?(int?i?=?0;?i??ary.length;?i++)?{
System.out.println(ary[i]+"?");
}
}
}
//快速排序
class?KuaiSu?implements?Runnable?{
int[]?ary;
public?KuaiSu(int[]?ary)?{
this.ary?=?ary;
}
@Override
public?void?run()?{
long?st?=?System.currentTimeMillis();
System.out.println(new?Date()?+?"快速排序線(xiàn)程:開(kāi)始執(zhí)行排序");
quickSort(ary,?1,?ary.length);
long?et?=?System.currentTimeMillis();
System.out.println(new?Date()?+?"快速排序線(xiàn)程排序完成,耗費(fèi)時(shí)間"?+?(et?-?st)?+?"毫秒");
for?(int?i?=?0;?i??ary.length;?i++)?{
System.out.println(ary[i]+"?");
}
}
public?static?int?Partition(int?a[],?int?p,?int?r)?{
int?x?=?a[r?-?1];
int?i?=?p?-?1;
int?temp;
for?(int?j?=?p;?j?=?r?-?1;?j++)?{
if?(a[j?-?1]?=?x)?{
i++;
temp?=?a[j?-?1];
a[j?-?1]?=?a[i?-?1];
a[i?-?1]?=?temp;
}
}
temp?=?a[r?-?1];
a[r?-?1]?=?a[i?+?1?-?1];
a[i?+?1?-?1]?=?temp;
return?i?+?1;
}
public?static?void?quickSort(int?a[],?int?p,?int?r)?{
if?(p??r)?{
int?q?=?Partition(a,?p,?r);
quickSort(a,?p,?q?-?1);
quickSort(a,?q?+?1,?r);
}
}
}
① 代碼:
public?class?quicksortdemo?{
private?int?array[];
private?int?length;
public?void?sort(int[]?inputArr)?{
if?(inputArr?==?null?||?inputArr.length?==?0)?{
return;
}
this.array?=?inputArr;
length?=?inputArr.length;
quickSort(0,?length?-?1);
}
private?void?quickSort(int?lowerIndex,?int?higherIndex)?{
int?i?=?lowerIndex;
int?j?=?higherIndex;
//?calculate?pivot?number
int?pivot?=?array[lowerIndex+(higherIndex-lowerIndex)/2];
//?Divide?into?two?arrays
while?(i?=?j)?{
while?(array[i]??pivot)?{
i++;
}
while?(array[j]??pivot)?{
j--;
}
if?(i?=?j)?{
swap(i,?j);????????????????
i++;
j--;
}
}
//?call?quickSort()?method?recursively
if?(lowerIndex??j)
quickSort(lowerIndex,?j);
if?(i??higherIndex)
quickSort(i,?higherIndex);
}
private?void?swap(int?i,?int?j)?{
int?temp?=?array[i];
array[i]?=?array[j];
array[j]?=?temp;
}
public?static?void?main(String?a[]){
quicksortdemo?sorter?=?new?quicksortdemo();
int[]?input?=?{24,2,45,20,56,75,2,56,99,53,12};
sorter.sort(input);
for(int?i:input){
System.out.print(i);
System.out.print("?");
}
}
}
② 運(yùn)行:
c:\java?quicksortdemo
2?2?12?20?24?45?53?56?56?75?99