基本排序演算法:選擇排序、氣泡排序、插入排序
高階選擇排序:快速排序、歸併排序
選擇排序的邏輯:
外層迴圈從首位向後,來控制要確定的位置;
內層迴圈從外層迴圈的下一位位置開始,往後遍歷;
外層迴圈的位置和內層迴圈位置的值進行迴圈比較;
內層u想你換比較完-輪,可以找到乙個最值;
將該最值與外層迴圈的值交換。
案例: public class test0 ;
for (int i = 0; i < a.length - 1; i++)
}a[temp] = a[i];
a[i] = min;
}system.out.println(arrays.tostring(a));
} }
氣泡排序邏輯:
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
用二重迴圈實現氣泡排序
用二重迴圈將5個數字公升序排序步驟:
1、5個數字如何存放
陣列,陣列.length = 5
2、控制比較多少輪
外層迴圈,迴圈變數 i
3、控制每輪比較多少次
內層迴圈,迴圈變數 j
4、交換資料
氣泡排序速記口訣(公升序)
* n 個數字來排隊
* 兩兩相比小靠前
* 外層迴圈 n-1
* 內層迴圈 n-1-i
案例:使用氣泡排序對輸入的5名學員成績進行降序排列
public class test1
system.out.print("學員成績按降序排列:");
for (int i = 0; i a[j])}}
system.out.println(arrays.tostring(a));
} }
插入排序的邏輯:
外層迴圈從首位迴圈到末位-1的位置;
內層迴圈與插入的邏輯相同。
案例: public class lx0_1 ;
for (int i = 0; i =0 ; j--) else
}//如果一直沒插入,就插入在首位
if (!isinsert)
}system.out.println(arrays.tostring(a));
} }
基本排序排序演算法
時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...
基本排序排序演算法
時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...
基本排序演算法
將要排序的物件分作兩部份,乙個是已排序的,乙個是未排序的,從後端未排序部份選擇乙個最小值,並放入前端已排序部份的最後乙個,例如 排序前 70 80 31 37 10 1 48 60 33 80 1 80 31 37 10 70 48 60 33 80 選出最小值1 1 10 31 37 80 70 ...