插入排序

来源:互联网 发布:崔雪莉在sm的地位 知乎 编辑:程序博客网 时间:2024/05/16 05:21

设计思想:如下5个数3 1 4 5 6, 从第i=1个元素开始往前遍历,到6结束每次遍历都使从0到第i-1个元素依次与第i个元素判断,(升序)若比它大,则依次后移,反之则停止把它插入第i个元素。具体程序如下

#include <iostream> using namespace std; void sort(int *a, int len){    int i, j;    int temp = 0;    for(i=1; i<len; i++)    {        temp = a[i];        for(j=i-1; j>=0; j--)        {            if(a[j]>temp)                a[j+1] = a[j];            else            {                //a[j+1] = temp;  这里可以注释掉                break;            }        }              //注意内循环结束后,判断是否正常退出,若是说明前面一个都没有插入j=-1; 则应是a[i]最小,需插入第一个位置        //if(j<0)相对来说是一种优化,因为无论内循环是否正常退出,j的位置都会确定好            a[j+1] = temp;    }}void print_o(int *a, int len){    int i;    for(i=0; i<len; i++)        cout << a[i] << " ";    cout << endl;}int main(){    int a[5] = {4,3,3,6,2};    cout << "no sort : ";    print_o(a, 5);    sort(a, 5);    cout << "has sort : ";    print_o(a,5);}
0 0
原创粉丝点击