데이터 구조 - 직접 삽입 정렬
9911 단어 데이터 구조
첫 번 째 정렬: 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 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.