顺序表-直接插入排序

 1 #include<bits/stdc++.h>
 2 #define MAX 100
 3 typedef struct{
 4     int *Elem;
 5     int length;
 6 }SqList;
 7 void Creat(SqList &s){
 8     s.Elem = (int*)malloc(MAX*(sizeof(int)));
 9     if(!s.Elem){
10         printf("创建失败\n"); exit(1);
11     }
12     int n;
13     printf("请输入n以-1结束:\n");
14     scanf("%d",&n);
15     s.length = 1;
16     while(n!=-1){
17         s.Elem[s.length++] = n;
18         scanf("%d",&n);
19     }
20 }
21 //直接插入排序 
22 void InserSort(SqList &s)
23 {
24     int i,j;
25     for(i=2;i<s.length;i++){
26         s.Elem[0] = s.Elem[i];
27         for(j=i-1;s.Elem[0]<s.Elem[j];j--){
28             s.Elem[j+1] = s.Elem[j];
29         }
30         s.Elem[j+1] = s.Elem[0];
31     } 
32 }
33 //输出顺序表
34 void print(SqList s){
35     int i;
36     for(i=1;i<s.length;i++){
37         printf("%d ",s.Elem[i]);
38     }
39 } 
40 int main(){
41     SqList s;
42     Creat(s);
43     InserSort(s);
44     print(s);
45     return 0;
46 }

 

posted @ 2020-10-25 16:37  西南大学  阅读(544)  评论(0)    收藏  举报