c++排序算法之插入法

来源:互联网 发布:js屏幕图片自动旋转 编辑:程序博客网 时间:2024/06/06 19:41

1.后插(从后往前插入)

思路:数组有N个元素,第i次循环后,前面i+1个元素排成升序,,现在要将第i+2个元素插入,具体做法:找到能插入的位置,在从后往前挨个找的过程中,把每一个比要插入的元素大的元素往后移一位,最后把值插入。

void back_insert(int a[], int n){for (int i = 1; i < n; i++){int p = a[i];int j = i - 1;while (p < a[j] && j >= 0){a[j + 1] = a[j];j--;}a[j + 1] = p;}}

2.前插(从前往后插入)

思路:数组有N个元素,第i次循环后,前面i+1个元素排成升序,,现在要将第i+2个元素插入,具体做法:先找到要插入的位置,然后把该位置后面的元素从后往前依次后移一位,最后插入。

void front_insert(int a[], int n){for (int i = 1; i < n; i++){int p = a[i];int j = 0;while (p>a[j] && j < i){j++;}for (int k = i; k > j; k--){a[k] = a[k - 1];}a[j] = p;}}

原创粉丝点击