幾種常用排序演算法

2021-07-25 10:06:16 字數 1078 閱讀 7195

一、氣泡排序

已知一組無序資料a[1]、a[2]、……a[n],需將其按公升序排列。首先比較a[1]與a[2]的值,若a[1]大於a[2]則交換兩者的值,否則不變。再比較a[2]與a[3]的值,若a[2]大於a[3]則交換兩者的值,否則不變。再比較a[3]與a[4],依此類推,最後比較a[n-1]與a[n]的值。這樣處理一輪後,a[n]的值一定是這組資料中最大的。再對a[1]~a[n-1]以相同方法處理一輪,則a[n-1]的值一定是a[1]~a[n-1]中最大的。再對a[1]~a[n-2]以相同方法處理一輪,依此類推。共處理n-1輪後a[1]、a[2]、……a[n]就以公升序排列了。

優點:穩定,比較次數已知;

缺點:慢,每次只能移動相鄰兩個資料,移動資料的次數多。

// 氣泡排序 

public static void bubblesort(int number)}}

二、選擇排序

已知一組無序資料a[1]、a[2]、……a[n],需將其按公升序排列。首先比較a[1]與a[2]的值,若a[1]大於a[2]則交換兩者的值,否則不變。再比較a[1]與a[3]的值,若a[1]大於a[3]則交換兩者的值,否則不變。再比較a[1]與a[4],依此類推,最後比較a[1]與a[n]的值。這樣處理一輪後,a[1]的值一定是這組資料中最小的。再將a[2]與a[3]~a[n]以相同方法比較一輪,則a[2]的值一定是a[2]~a[n]中最小的。再將a[3]與a[4]~a[n]以相同方法比較一輪,依此類推。共處理n-1輪後a[1]、a[2]、……a[n]就以公升序排列了。

優點:穩定,比較次數與氣泡排序一樣,資料移動次數比氣泡排序少;

缺點:相對之下還是慢。

// 選擇排序 

public static void selectionsort(intnumber) 

for(int i=0; i      

number[i+1] = tmp;  

}  } 

private static void swap(int number, inti, int j) 

private static void swap(int number, inti, int j)  

}  

常用幾種排序演算法

常用的幾種排序演算法 選擇排序方法時,除了基本實現的要求外,還應當注重所選擇演算法的時間 空間複雜度既執行效率,另外在實際工作中往往還要注意演算法的穩定性 排序後相同元素的相對位置是否發生改變 等。一 冒泡 插入 選擇 二 快排 歸併 1 氣泡排序 氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對...

幾種常用的排序演算法

介紹 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n 2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實...

幾種常用排序演算法總結

排序 強力推薦,這個算是總結的不錯的一篇文章,直接轉了 文章中的 也許有些錯誤,關於直接插入排序,第一篇已經做出了修改,其他的有時間再看 所謂排序,就是要整理檔案中的記錄,使之按關鍵字遞增 或遞減 次序排列起來。當待排序記錄的關鍵字都不相同時,排序結果是惟一的,否則排序結果不惟一。在待排序的檔案中,...