算法設(shè)計與分析作業(yè)_第1頁
算法設(shè)計與分析作業(yè)_第2頁
算法設(shè)計與分析作業(yè)_第3頁
算法設(shè)計與分析作業(yè)_第4頁
算法設(shè)計與分析作業(yè)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

算法設(shè)計與分析作業(yè)

作業(yè)一:給一個數(shù)組,用冒泡排序、選擇排序、合并排序與快速排序四種方法

實現(xiàn)過程且比較,并把排序時間顯示出來。

冒泡排序:

原理:

將待排序的元素看作是豎著排列的“氣泡”,較小的元素比較輕,從而要往上

浮。在冒泡排序算法中我們要對這個“氣泡”序列處理若干遍。所謂一遍處理,就

是自底向上檢查一遍這個序列,并時刻注意兩個相鄰的元素的順序是否正確。如

果發(fā)現(xiàn)兩個相鄰元素的順序不對,即“輕”的元素在下面,就交換它們的位置。

代碼:

packagemaopao;

publicclassmaopao(

publicvoidpaixu(){

intarray[]={1,3,-2,0,8,7,-1,13,63,-20,120};

longstart=System.wori/ne();〃開始時間

for(inti=0;i<array.length;i++){

for(intj=i+1;j<array.length;j++){

if(array[i]<array[j]){

inttempt=array[i];

array[i]=array[j];

array[j]=tempt;

)

}

)

for(inti=0;i<array.length;i++){

System.out.println(""+array[i]+"");

)

longend=System〃結(jié)束時間

System,out.printIn("所花費的時間為:"+(end-start)+"納秒”);〃運行時間

)

publicstaticvoidmain(String[]args){

maopaom=newmaopao();

m.paixu();

)

}

運行結(jié)果:

:Problems@Javadoc圖聲明日控制臺漢

止〉maopao[Java,主用是國C:\ProgramFiles\Java\jrel.8.060\bin\javaw.

120

63

13

8

7

3

1

0

-1

-2

-20

斫花費的時冏為:714420比個

選擇排序:

原理:

對待排序的記錄序列進行n-1遍的處理,第i遍處理是將L[i..n]中最小者與

L[i]交換位置。這樣,經(jīng)過i遍處理之后,前i個記錄的位置已經(jīng)是正確的。

代碼:

packagexuanze;

publicclassxuanze(

publicstaticvoidmain(String[]args){

int[]arr={l,3,-2,0,8,7,-1,13,63,-20,120};

inttemp=0;

intmin=0;

longstart=System.nanoTime();

for(inti=0;i<am.length-l;i++){

min=i;

for(intj=i+l;j<arr.length;j++){

if(arr[min]>arr[j])

min=j;

}

if(min!=i){

temp=arr[min];

arr[min]=arr[i];

arr[i]=temp;

}

}

System.out.println("排序后的數(shù)組為:

for(inti=0;i<arr.length;i++){

System.out.println(arr[i]+"");

)

longend=System.nanoTime();

System.out.printin("所花費的時間為:”+(end-start)+"納秒");

)

)

運行結(jié)果:

VMM1ILA.___nrJ/\.

4

Problems@Javadoc艮聲明且控制臺區(qū),X笈|x/E

xuanze[JavaC:\ProgramFiles\Java\jrel,8.060\bin\javaw.exe(2015^

舞子舌的女公力:

?20

-2

-1

0

1

3

7

8

13

63

120

年花費約廿旬為:873530比號

合并排序:

原理:

是指將若干個已排序的子文件合并成一個有序的文件。

代碼:

packagehebing;

importjava.util.Arrays;

publicclasshebing

{

privatestaticvoidmergeSort(int[]array,intstart,intend,int[]

tempArray)

{

if(end<=start)

{

return;

)

intmiddle=(start+end)/2;

mergeSort(array,start,middle,tempArray);

mergeSort(array,middle+1,end,tempArray);

intk=0,leftindex=0,rightindex=end-start;

System.arraycopy(array,start,tempArray,0,middle-start+1);

for(inti=0;i<end-middle;i++)

{

tempArray[end-start-i]=array[middle+i+1];

}

while(k<end-start+1)

{

if(tempArrayfrightlndex]>tempArrayfleftlndex])

{

array[k+start]=tempArray[leftIndex++];

}

else

{

array[k+start]=tempArrayfrightlndex--];

}

k++;

}

)

publicstaticvoidmain(String[]args)

{

int[]array=newint[]{1,3,?2,0,8,7,-1,13,63,-20,120};

longstart=System.nanoH/we();

mergeSort(array,0,array.length-1,newint[array.length]);

System.out.printin(Arrays.toString(array));

longend=System.nanoTime();

System.out.printIn("所花費的時間為:”+(end-start)+"納秒");

)

}

■Problems@Javadoc”Y后控制臺漢涉SB試

hebing[JavaC:\ProgramFiles\Java\jrel.8Q_60\binyavaw.exe(

[-20,-2,-1,0,1,3,7,8,13,63,120]

廂花曼的什何有:540543楞0

快速排序:

原理:

通過一趟掃描后,使得排序序列的長度能大幅度地減少。

代碼:

packagekuaisu;

publicclasskuaisu

{

publicstaticvoidmain(String[]args)

(

quicksortqs=newquicksort();

intdata[]={1,3,-2,0,8,7,-1,13,63,-20,120};

longstart=System.nanoTi/we();

qs.data=data;

qs?sort(0,qs.data.length-1);

qs.display();

longend=System.nanoTime();

System.out.println("所花費的時間為:”+(end-start)+"納秒”);

}

}

classquicksort

{

publicintdata[];

privateintpartition(intsortArray[],intlow,inthight)

(

intkey=sortArray[low];

while(low<hight)

{

while(low<hight&&sortArray[hight]>=key)

hight--;

sortArray[low]=sortArray[hight];

while(low<hight&&sortArray[low]<=key)

low++;

sortArray[hight]=sortArray[low];

}

sortArray[low]=key;

returnlow;

}

publicvoidsort(intlow,inthight)

(

if(low<hight)

{

intresult=partition(data,low,,hight);

sort(low,result-1);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論