排序算法之——插入排序
生活随笔
收集整理的這篇文章主要介紹了
排序算法之——插入排序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
插入排序思想:將插入的元素記錄,與前面的元素進行比較大小,查詢到插入的位置,然后再將比它大的元素向后面移動,空出插入的位置,將元素插入。
剩下的和②步驟一樣。。。
代碼這里給出了3種,從基礎(chǔ)到優(yōu)化
//1 void InsertSort(int* a, int n) {for (int i = 1; i < n; ++i){if (a[i] < a[i - 1]){int temp = a[i];for (int j = 0; j < i; ++j){if (temp < a[j]){for (int k = i; k > j; k--)a[k] = a[k - 1];a[j] = temp;break;}}}} } //2 void InsertSort(int* a, int n) {int i, j;for ( i = 1; i < n; i++){if (a[i] < a[i - 1]){int temp = a[i];for (j = i; j >= 0 && a[j-1] > temp; j--){a[j] = a[j - 1];}a[j] = temp;}} } //3void InsertSort(int* a, int n) {int temp;for (int i = 1; i < n; i++){int low = 0, high = i - 1;temp = a[i];while (low <= high){int mid = (low + high) / 2;if (temp < a[mid])high = mid - 1;elselow = mid + 1;}for (int j = i; j > low; --j){a[j] = a[j - 1];}a[low] = temp;} }
主方法:
int main() {int arr[] = { 9,2,3,1,5,4,7,8,6 };int n = sizeof(arr) / sizeof(int);InsertSort(arr, n); //插入排序for (int i = 0; i < n; i++){cout << arr[i] << " ";}cout << endl;return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/single-dont/p/11354265.html
總結(jié)
以上是生活随笔為你收集整理的排序算法之——插入排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: memset()函数的赋值问题
- 下一篇: 使用XSLT转换XML数据并传递参数