데이터 구조 - 직접 삽입 정렬

9911 단어 데이터 구조
예 를 들 어 정렬 대기 배열 은: 7 입 니 다.   2   4   1   3   2   
                첫 번 째 정렬: 2  7   4   1   3   2    
                두 번 째 정렬: 2   4   7   1   3   2
                세 번 째 정렬: 1   2   4   7   3   2
                네 번 째 정렬: 1   2   3   4   7   2
                다섯 번 째 정렬: 1   2   2   3   4   7
프로그램 구현 코드 는 다음 과 같 습 니 다.
 1 #include <stdio.h>

 2 #include <stdlib.h>

 3 #include <time.h>

 4 #define MAXSIZE 20

 5 typedef int KeyType;

 6 typedef char InfoType;

 7 

 8 //     

 9 typedef struct {

10     KeyType key;

11     InfoType otherinfo;

12 }RedType;

13 typedef struct {

14     RedType r[MAXSIZE+1];

15     int length;

16 }SqList;

17 

18 //    

19 void print(SqList *L);

20 void init(SqList *L);

21 void insertSort(SqList *L);

22 

23 //

24 void init(SqList *L) {

25     int n,i;

26     printf("");

27     scanf("%d",&n);

28     srand(((int)time(0)));//      

29     for(i=1; i<=n; i++) {

30         L->r[i].key = rand()%10+1;

31     }

32     L->length = n;

33     printf("");

34     print(L);

35 }

36 

37 //      

38 void print(SqList *L) {

39     int i;

40     for(i=1; i<=L->length; i++) {

41         printf("%d ",L->r[i].key);

42     }

43     printf("
"); 44 } 45 46 // 47 void insertSort(SqList *L) { 48 int i,j; 49 for(i=2; i<=L->length; i++) { 50 if(L->r[i].key < L->r[i-1].key) { 51 L->r[0] = L->r[i];// 52 L->r[i] = L->r[i-1]; 53 for(j=i-2; L->r[0].key<L->r[j].key; --j) { 54 L->r[j+1] = L->r[j];// ,Lj Lj+1 ------>Lj+1=Lj 55 } 56 /*for(j=i-1; L->r[0].key<L->r[j].key; --j) { 57 L->r[j] = L->r[j-1]; 58 }*/ 59 // j=0; 60 L->r[j+1] = L->r[0];// 61 } 62 } 63 } 64 65 // 66 int main() 67 { 68 SqList sq; 69 init(&sq); 70 insertSort(&sq); 71 printf(""); 72 print(&sq); 73 return 0; 74 }

좋은 웹페이지 즐겨찾기