排序算法分類
排序算法時間複雜度
冒泡排序
冒泡排序要注意的一點就是它是兩兩對比,當走完一遍的時候,可以確定最大的已經被排序到最後了,這個在寫代碼的時候要注意,記住關鍵的兩點:
- 相鄰的兩個數進行比較,大於則進行調換。
- 每一組走完就可以確定最大的數已經放到了正確的位置。
代碼
private static void bubbling(int[] arr) {
int len = arr.length;
int count = 0;
for (int i = 0; i < len - 1; i++) {
for (int j = 1; j < len - i; j++) {
int c = arr[j-1];
count++;
if (arr[j-1] > arr[j]) {
arr[j-1] = arr[j];
arr[j] = c;
}
}
}
System.out.println("總共循環了: " + count);
for (int i : arr) {
System.out.print(i);
System.out.print(",");
}
}
選擇排序
選擇排序也是屬於簡單算法,他執行的原理就是從第一個開始,一次與後續的所有數字進行對比,找到比他小的然後調換位置,以此類推,直到所有元素均排序完畢。
圖示:
代碼
private static void selection(int[] arr) {
int len = arr.length;
int count = 0;
for (int i = 0; i < len - 1; i++) {
for (int j = i; j < len - 1; j++) {
int c = arr[i];
count++;
if (arr[i] > arr[j+1]) {
arr[i] = arr[j+1];
arr[j+1] = c;
}
}
}
System.out.println("總共循環了: " + count);
for (int i : arr) {
System.out.print(i);
System.out.print(",");
}
}
參考文章:
https://blog.csdn.net/qq_31860135/article/details/83993357
https://www.cnblogs.com/onepixel/articles/7674659.html