三種基礎排序演算法總結

2022-07-21 07:24:06 字數 1880 閱讀 3899

一、氣泡排序

1、演算法思想:

1)、兩層迴圈,外層迴圈i從0開始,內層迴圈從j=i+1開始

2)、如果ary[i] < ary[j],則交換其值

3)、直到外層迴圈到length-1

2、主演算法實現

public

static

void bubblesort(int

ary)}}

}

3、穩定性:

int ary = ;

algobubblesort(ary);

for(int

value:ary),此氣泡排序是非穩定的排序

}

二、選擇排序

1、演算法思想

1)、兩層迴圈,外層迴圈i從0開始,內層迴圈j從i+1開始。

2)、用minindex記錄每輪內層迴圈的最小元素位置

3)、每輪內層迴圈完成後交換ary[minindex]和ary[i]的值

2、主演算法實現

public

static

void selectionsort(int

ary)

}//內層迴圈全部結束再交換

swap(ary, i, minindex);

}}

3、穩定性

選擇排序是非穩定的排序

例如對陣列排序後,重複元素2的原有相對位置被破壞。

三、插入排序

1、演算法思想

1)、兩層迴圈,外層迴圈i從0開始,內層迴圈j從i開始向前掃瞄

2)、如果ary[j] < ary[j-1],也即元素ary[j]的值嚴格小於ary[j-1]的值,就立即交換。否則break停止j的掃瞄。

2、演算法實現

1)版本一:o(n^2)的交換時間複雜度

public

static

void insertsort(int

ary)

else}}

}

2)版本二:

public

static

void insertsort(int

ary)else

ary[position] = tmp;//

正確放置ary[position]

} }

}

3、穩定性:

插入排序是穩定的排序。

四、區別比較

1、氣泡排序

特點:內層迴圈j向後掃瞄,依次和ary[i]比較,遇到更小,則立即交換。

每完成一輪外層迴圈,ary[i]在全域性得到最終的次序,且ary[i]之前元素的次序也是全域性的次序,後序的排序過程已對其不再有影響。

2、選擇排序

特點:內層迴圈j同樣向後掃瞄,依次和ary[i]比較,但是只記錄更小元素的指標,最後才交換。

每完成一輪外層迴圈,ary[i]在全域性得到最終的次序,且ary[i]之前元素的次序也是全域性的次序,後序的排序過程已對其不再有影響。

3、插入排序

特點:內層迴圈j向前掃瞄,依次和ary[i]比較,為ary[i]找到正確的位置。

每完成一輪外層迴圈,ary[i]得到的次序只能是區域性的次序,未必是全域性的最終次序。同時ary[i]之前的元素只能是區域性的次序,後序的排序過程可能會發生改變。

三種排序演算法

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

三種基本排序演算法

示例陣列 以公升序為例 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為...

php三種排序演算法

1.快速排序不費空間也節省時間 arr array 5,1,8,2,6,4,9,3,7 arr array 1,2,3,4,5,6,7,8,9 arr array 9,8,7,6,5,4,3,2,1 arr array 1,5,9,7,6,4 function fast arr for i 1 i ...