排序演算法分類:
- 內部排序(在排序過程中不需要訪問外存就可以完成排序)
- 外部排序
內部排序分類:
- 交換排序
- 氣泡排序
- 快速排序
- 選擇排序
- 直接選擇排序
- 堆排序
- 插入排序
- 直接插入排序
- 希爾排序
- 合併排序
外部排序:
常見的是多路歸併演算法,即將原檔案分為多個能夠一次裝入記憶體一部分,分別把每一部分調入記憶體完成排序,然後對已經排序的子檔案進行歸併排序
氣泡排序法:
氣泡排序法是一種相鄰資料交換的排序方法。
氣泡排序法的基本思想是:對待排序記錄關鍵字從後往前(逆序)進行多遍掃描,當發現相鄰兩個關鍵字的次序與排序要求的規則不符時,就將這兩個記錄進行交換。這樣,關鍵字較小的記錄將逐漸從後面向前面移動,就象氣泡在水中向上浮一樣,所以該演算法也稱為氣泡排序法。
核心程式碼如下:
//氣泡排序 //a 傳遞的要排序的陣列 //n 陣列元素的長度 void BubbleSort(int a[],int n){ int i,j,temp; int flag = 0; for(i = 0 ; i < n ; i++){ for(j = n - 1 ; j > i; j--){ if(a[j] < a[j-1]){ temp = a[j-1]; a[j-1] = a[j]; a[j] = temp; flag = 1; } } //如果一遍下來沒有資料交換,則不需要再繼續迴圈 if(flag == 0) break; else flag = 0; } }
簡單選擇排序法
選擇排序的基本思想:對n個記錄進行掃描,選擇最小的記錄,將其輸出,接著在剩下的n-1個記錄中掃描,選擇最小的記錄將其輸出,不斷重複這個過程,直到只剩一個記錄為止。
核心程式碼如下:
//簡單選擇排序 //a 要排序的陣列 //n 陣列的元素個數 void SelectSort(int a[],int n){ int i,j,k,; int temp; for(i = 0 ; i < n-1 ; i++){ k = i; for(j = i+1 ; j < n ; j++){ if(a[j] < a[k]) k = j; } if(k != i){ temp = a[i]; a[i] = a[k]; a[k] = temp; } } }