• 排序算法 之 插入排序


     1 #include <iostream>
     2 using namespace std;
     3 void insertSort(int data[],int length)
     4 {
     5 
     6     for(int i = 1,j; i < length ;i++)
     7     {
     8         int temp = data[i];
     9         for ( j = i; j > 0&&temp < data[j-1]; j--)
    10         {
    11             data[j] = data[j-1];
    12         }
    13         data[j] = temp;
    14         for (int ii = 0 ; ii < length ;ii++)
    15         {
    16             printf("%d ",data[ii]);
    17         }
    18         printf("
    ");
    19 
    20     }
    21 
    22 }
    23 int main()
    24 {
    25     int data[] = {2,5,1,4,0,-3,59,-78,62,3};
    26     insertSort(data,sizeof(data)/sizeof(int));
    27     printf("
    
    ");
    28     for (int i =0 ;i < sizeof(data)/sizeof(int) ;++i)
    29     {
    30         printf("%d ",data[i]);
    31     }
    32     printf("
    ");
    33     return 0;
    34 }

    从第二个元素开始,依次比较,如果比前面的数小,就替换,直到比到比前面的数字大。所以没经过一次比较,第一个数字总是比较完的这几个数字中最小的一个。

    最后输出结果为:

    2 5 1 4 0 -3 59 -78 62 3
    1 2 5 4 0 -3 59 -78 62 3
    1 2 4 5 0 -3 59 -78 62 3
    0 1 2 4 5 -3 59 -78 62 3
    -3 0 1 2 4 5 59 -78 62 3
    -3 0 1 2 4 5 59 -78 62 3
    -78 -3 0 1 2 4 5 59 62 3
    -78 -3 0 1 2 4 5 59 62 3
    -78 -3 0 1 2 3 4 5 59 62

    -78 -3 0 1 2 3 4 5 59 62
    请按任意键继续. . .
     
    将每次比较后的结果都打印了出来,便于我们理解整个程序。你会发现,每次比较,i之后的数字都不会发生变化。
    To get,you have to give.To give,you need learn to insist.If you really find it is hard for you,then you quit.But once you quit.Don't complain.
  • 相关阅读:
    AWVS——windows下扫描(上)
    中介者模式
    设计模式-类型2
    设计模式=类型
    C++ 1
    字符占字节
    编程规范
    位运算相关规律
    十进制转二进制
    递归理解
  • 原文地址:https://www.cnblogs.com/hit-ycy/p/10852244.html
Copyright © 2020-2023  润新知