插入排序的优化过程

 1 #include<stdio.h>
 2 void judge(int days);
 3 void printfArr(int arr[],int len);
 4 void insert_sort1(int arr[],int len);
 5 void insert_sort2(int arr[],int len);
 6 void insert_sort3(int arr[],int len);
 7 int main()
 8 {
 9     int arr[10]={3,2,1,4,5,6,8,3,2,9};
10     int len=10;
11     insert_sort1(arr,len);
12     printfArr(arr,len);
13     
14     getchar();
15     getchar();
16     return 0;
17 }
18 void printfArr(int arr[],int len)//输出结果
19 {
20     int  i;
21     for(i=0;i<len;i++)
22         printf("%d",arr[i]);
23 }
24 
25 //插入排序
26 void insert_sort3(int arr[],int len)
27 {
28     int temp,i,j;
29     for(i=1;i<len;i++)//确定插入过程中需要插入元素的下标
30     {
31         temp=arr[i];//保存一下待插入的元素值
32         for(j=i-1;j>=0&&temp<arr[j];--j)//j是已序序列最后一个下标
33         {
34             arr[j+1]=arr[j];
35         }
36         arr[j+1]=temp;//把保存的元素放到对应的位置
37     }
38 }
39 
40 void insert_sort2(int arr[],int len)
41 {
42     int temp,i,j;
43     for(i=1;i<len;i++)//确定插入过程中需要插入元素的下标
44     {
45         temp=arr[i];//保存一下待插入的元素值
46         for(j=i-1;j>=0;--j)//j是已序序列最后一个下标
47         {
48             if(temp>arr[j])//待插入的元素和最后一个元素进行判断
49             {
50                 arr[j+1]=arr[j];
51             }
52             else
53                 break;
54         }
55         arr[j+1]=temp;//把保存的元素放到对应的位置
56     }
57 }
58 
59 void insert_sort1(int arr[],int len)
60 {
61     int temp,i,j;
62     for(i=1;i<len;i++)//确定插入过程中需要插入元素的下标
63     {
64         
65         for(j=i-1;j>=0;--j)//j是已序序列最后一个下标
66         {
67             if(arr[j+1]>arr[j])//待插入的元素和最后一个元素进行判断
68             {
69                 temp=arr[j+1];
70                 arr[j+1]=arr[j];
71                 arr[j]=temp;
72             }
73             else
74                 break;
75         }
76     }
77 }

猜你喜欢

转载自www.cnblogs.com/liugangjiayou/p/11729367.html