直接插入排序是一種非常簡單、容易寫的排序
在沒有排好序的序列中,每次選擇乙個最大或最小的元素,加入有序序列,直到整個序列有序
建立索引變數 i ,i 的初值為0;
建立數值變數current,表示當前為止最大或最小的元素
建立索引變數flag,表示current值所對應的索引
從包括 i 的子串行開始,往後遍歷
若找到可替換current值的元素,替換並將flag置為當前迴圈的索引
i 加 1,並重複4,直到最後乙個元素
// 直接選擇排序
void sort_selectionsort(int *arr, int len, int mode)
}// 交換兩個數的值
utils_exchange(arr, i, flag);}}
測試**#define n 8
int main()
; printf("公升序排列結果:\n");
sort_selectionsort(arr, n, 1);
utils_print_arr(arr, n, "%d ");
printf("\n\n降序排列結果:\n");
sort_selectionsort(arr, n, 0);
utils_print_arr(arr, n, "%d ");
return 0;
}
運算結果
選擇排序 直接選擇排序
演算法思想 在每一趟的排序中,從待排序列中選出關鍵字最小或者最大的元素放在其最終的位置上 過程分析 在第i趟直接排序中,通過n i次關鍵字的比較,從n i 1個元素中選出關鍵字最小的元素 與第i個元素進行交換。經過n 1趟比較,直到表有序為止 效能分析 時間複雜度o n 2 include defi...
選擇排序 直接選擇排序
直接選擇排序也成為簡單選擇排序。對於乙個待排序數列,每次從無序區選擇乙個最小的元素,放入有序區 初始時有序區為空 直到無序區元素只有乙個 即整個數列的最大值 具體操作 第i趟排序開始,數列分為有序區a 0,i 1 和無序區a i,n 1 從無序區中選擇最小元素a k 將a k 放在無序區的最左邊的位...
選擇排序 直接選擇排序
直接選擇排序 straight select sorting 也是一種簡單的排序方法,它的基本思想是 第一次從r 0 r n 1 中選取最小值,與r 0 交換,第二次從r r n 1 中選取最小值,與r 1 交換,第i次從r i 1 r n 1 中選取最小值,與r i 1 交換,第n 1次從r n ...