直接選擇排序是將整個待排序序列分為兩部分,一部分為有序(最開始有序序列為空),一部分為無序(最終無序序列為空)。有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。
比如:對r[0….n]陣列進行選擇排序。其中r[0…i]為有序,r[i+1…n]為無序,且r[0…i]中的每乙個數都不大於r[i+1…n]中的數。
在r[i+1…n]中選擇乙個最小的數r[k],交換r[i+1]與r[k],將r[i+1]併入有序序列。則現在的有序序列為r[0…i+1],無序序列為r[i+2…n],重複進行這樣的操作,直到無序序列為空。
typedef
int datatype;
int selectionsort(datatype *array, int size)
for(i = 0; i < size; i++)
}swap(array+i, array+k);
}return0;}
void swap(datatype *a, datatype *b)
排序演算法之直接選擇排序
直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...
排序演算法 之選擇排序(直接選擇排序,堆排序)
一 排序演算法分為 1.插入排序 直接插入排序 希爾排序 2.選擇排序 直接選擇排序 堆排序 3.交換排序 氣泡排序 快速排序 4.歸併排序 二,選擇排序 直接選擇排序 1.演算法 選擇排序 直接選擇排序 void selectsort int a,size t n if a child a par...
每日演算法 選擇排序演算法之直接選擇排序
1 演算法簡介 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下 2 演算法描述和分析 n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果 1 初始狀態 無序區為r 1.n 有序區為空。2 第i趟排序 i 1,2,3.n 1 第i趟排序開始時,當前...