冒泡,快速,選擇排序之理解

2021-08-17 12:11:36 字數 2155 閱讀 8670

冒泡演算法

思路: 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。

即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換

/*最簡單的冒泡演算法

* n個數,比較(n-1)次,而隨著比較的次數的增加,每次要進行比較的資料依次減少。

* 每趟比較下來都會確定乙個數的位置

*/public

class bubblesort ;

for(int i = 0; i < arr.length -1 ; i++)

}system.out.println("第"+(i+1)+"次排序的結果");

for(int a=0;aout.print(arr[a] + "\t");

}system.out.println("");

}system.out.println("最終的排序結果:");

選擇排序思路:從0索引開始,依次和後面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處,第二次找到第二小的值。

/*選擇排序

*每一次比較都會確定乙個最小的值

*/public

class selectsort ;

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

}int temp = arr[i];

arr[i] = arr[min];

arr[min] = temp;

system.out.println("第"+(i+1)+"次排序的結果");

for(int a=0;aout.print(arr[a] + "\t");

}system.out.println("");

}system.out.println("最終的排序結果:");

快速排序思路:對於給定的一組記錄,選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分,直到序列中的所有記錄均有序為止。(實現平衡二叉樹)

//快速排序

public class quicksort;

sort(arr , 0 , arr.length-1);

system.out.println("排序後的結果:");

for(int x : arr)

}//將陣列的某一段元素進行劃分,小的在左,大的在右

public static int divide(int a,int start,int

end)

while(start

< end && a[end] >= base)

//從右邊開始遍歷,如果比基準值大,就繼續向左走

end--;

//上面的while迴圈結束時,就說明當前的a[end]的值比基準值小,應與基準值進行交換

if(start

< end)

}//這裡返回start或者end皆可,此時的start和end都為基準值所在的位置

return end;

}//排序

冒泡,選擇,快速排序

氣泡排序 比較相鄰的兩個數,把比較的冒上去,所以很簡單的得到 for i 0 i 5 i 選擇排序 就是打擂台的方式,每一次找出最大的與末尾的交換,先把啊a i 的值和位置存上,然後與a j 比較,如果value大就賦值給臨時變數,然後交換位置 void selectsort char a,int ...

選擇,冒泡,快速排序

排序演算法是演算法中比較基礎的,在這裡先對三種最簡單的排序演算法做個總結。一 選擇排序 大致思路為 依次選擇無序區的最小值和無序區的第乙個值交換。void exchange int a,int b void selection sort int a,int len 時間複雜度為n 2。二 氣泡排序 ...

理解 氣泡排序 快速排序

練習 second text hao long 片.建立乙個結構體,用來儲存姓名和分數 typedef student student intmain for int i 0 i num 1 i for int i 0 i num i getchar getchar 用來暫停程式,以便檢視程式輸出的...