算法-插入排序

2020-12-07 10:20

阅读:770

标签:函数   break   就是   ring   插入   ++   lse   crt   fine   

插入排序的原理是每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是要找到新插入的数对应原序列中的位置。那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序,时间复杂度同样为O(n²)。 这种算法是稳定的排序方法。

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include  3 #includemalloc.h>
 4 #include string.h>
 5 
 6 int InsertSort(int *p, int n)
 7 {
 8     int i, j,temp=0;
 9     for (i = 1; i )
10     {
11         temp = p[i];
12         for (j = i-1; j >= 0; j--)
13         {
14             if (temp //当temp比前面的数小时,把前面的数拿到temp这个位置
15             {
16                 p[j+1] = p[j];
17             }                   //进行下一次比较,j-1
18             else     //如果temp比前面的数大,则跳出循环
19                 break;
20 
21         }
22         p[j+1] = temp;  //因为j多循环了一次,所以加上1
23     }
24 }
25 
26 
28 
29 int dayin(int *q,int len)
30 {
31     int i;
32     for (i = 0; i )
33     {
34         printf("%d ", q[i]);
35     }
36 
37 
38 }
39 
40 void main()
41 {
42     int a[] = { 5,2,4,50,5,10,10,3,1,19,11,6,7,8,9 };
43     int len = sizeof(a) / sizeof(a[0]);
44     InsertSort(a, len);
45     dayin(a, len);
46   
47     printf("\n%d", len);
48         
49 
50 }

函数不理解可以看下我写的解析

技术图片

 

算法-插入排序

标签:函数   break   就是   ring   插入   ++   lse   crt   fine   

原文地址:https://www.cnblogs.com/cyyz-le/p/10989611.html


评论


亲,登录后才可以留言!