演算法基礎 選擇排序篇 簡單選擇排序

2021-09-29 16:41:59 字數 1411 閱讀 2470

選擇排序基本思想是:每一趟(如第 i 趟)在後面的n - i + 1(i = 1 , 2 , 3 … , n - 1)[包括第 i 個元素] 個待排序元素中選取關鍵字最小的元素,作為有序子串行的第 i 個元素,直到第 i - 1 趟做完,待排序元素只剩下乙個,就不用再選了。因為在無序表裡面選擇最小的元素只能是順序查詢法,並且必須每次都得掃瞄完整個無序表,並且除了最後乙個排序的元素外,每乙個元素都得考察一遍,所以這個就不存在最多進行 n - 1 次這種情況(氣泡排序),這個應該是確定的必須得走 n - 1 趟

簡單選擇排序每一趟排序都可以確定乙個元素的最終位置

演算法儲存結構的適用性:個人覺得既可以採用順序儲存結構又可以採用鏈式儲存結構,對於順序儲存結構後期會涉及到將無序表中最小的值與第 i 個位置進行交換,這種直接訪問的特性,只有順序儲存結構才有,而對於鏈式儲存結構,可以採用單鏈表形式,對於第 i 個元素,可以採用指標 p 指向第 i 個元素所在的節點,這樣,順序查詢,找到最小元素後,直接換值或者換節點都可以 。

演算法實現

/*

簡單選擇排序:

時間複雜度->最好情況:o(n^2)、平均情況:o(n^2)、最壞情況:o(n^2)

空間複雜度->o(1)

是否穩定->否

*/#includeusing namespace std;

#define max_size 5

typedef structelemtype;

void selectsort(elemtype a,int n)

if(min!=i) swap(a[i],a[min]);

}//簡單選擇排序是不穩定的,這就類似於快速排序,當關注第i個位置的時候,只要有比它小的,就會與它進行交換

//如:4 4 2,這時就會不穩定

}int main(),,,,};

selectsort(a,max_size);

for(int i=0;ireturn 0;

}

排序演算法 選擇排序 簡單選擇排序

package 選擇排序 簡單選擇排序 不穩定 基本思想 在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換 然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。public class 簡單選擇排序 system.out.println 排序之前 f...

排序演算法 簡單選擇排序

簡單選擇排序是一種選擇排序。1.簡單選擇排序的定義 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止。2.簡單選擇排序的流程 例項 注 紅色數字是位置發生變化的數值。3.簡單選擇排序的 實現 public class selectsort 若min有變化,...

排序演算法 簡單選擇排序

簡單選擇排序法就是通過n i次關鍵字比較,找到最小的關鍵字下標,最後在替換n i下標和最小下標的值。簡單排序的思想和氣泡排序的思想的區別是氣泡排序是相鄰關鍵字兩兩比較,如果小,則直接替換,可能在一輪迴圈會進行多次值交換。而簡單選擇排序法是一輪迴圈找到最小關鍵字下標,最後進行最多一次替換。public...