三種基本排序演算法

2021-10-08 08:08:37 字數 939 閱讀 2117

示例陣列

以公升序為例

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

}

第一次

j下標從0開始,第0位與第1位相比較,當第0位大於第1位時(3>1),進行交換。交換完陣列為

第二次j為1,第1位與第2位比較,3<5,不交換。

第三次j為2,第2位與第3位比較,5>2,交換。陣列為

第四次j為3,第3位與第4位比較,5>4,交換。陣列為

第一輪交換完畢後,確定了5為陣列中最大的數,第二輪交換時,只交換前4位。以此類推

示例陣列

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

}int temp = arr[i];

arr[i] = t;

arr[index] = temp;

}

將陣列中每乙個元素與第0個元素進行比較,記錄下最小的元素的值與下標,查詢完一次後,將最小的元素與第0個交換,即確定了陣列中最小的元素。交換完後陣列為

因為第一輪確定了最小值,第二輪只需要查詢3,5,2,4中最小值即可。

示例陣列

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

}}

第一次

用第1位與第0位比較,將較小的交換到前面。

第一次  j=2

用第2位與第1位相比較,5>3不交換。

第二次 j=1

用第1位與第0位比較,3>1不交換。 以此類推。

三種演算法各有特點。

冒泡每次比較相鄰的兩個數,先確定最後的數。

插入先確定前面的數,每次比較相鄰的數。

選擇先找本輪中最小值,記錄下標與值,將最小值與最前面的值交換。

三種基本排序

由於排序不僅是針對主關鍵字,那麼對於次關鍵字,因為待排序的記錄序列中可能存在兩個或者兩個以上的關鍵字相等的記錄,排序結果可能會存在不唯一的情況,所以我們給出了穩定與不穩定排序的定義。假設ki kj 1 i n,1 j n,i j 且在排序前的序列中 ri 領先於 rj 即i j 如果在排序後仍然領先...

三種排序演算法

1.氣泡排序法 2.選擇排序法 3.插入排序法 由小到大的順序 備註 網上筆試題,是參考網上別人的,具體出處找不到了,請諒解。摘抄記錄下來方便日後學習。如果有問題盡請批評指正,希望可以和大神一起交流。氣泡排序的最好的時間複雜度為o n 最壞的時間為 o n 2 演算法的平均時間複雜度為o n 2 選...

三種基本排序方法

三種基本排序方法 includevoid func1 int a 10 交換排序法 void func2 int a 10 選擇排序法 void func3 int a 10 氣泡排序 int main int choice printf 請輸入你要選擇的排序方法 n scanf d choice ...