数据结构-选择法排序
程序运行结果见如下截图:
程序代码如下:
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 SelectSort(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 printf("\n"); 36 } 37 38 //输出数组元素 39 void print(SqList *L) { 40 int i; 41 for(i=1; i<=L->length; i++) { 42 printf("%d ",L->r[i].key); 43 } 44 printf("\n"); 45 } 46 47 //进行选择排序 48 void SelectSort(SqList *L) { 49 int i,j,k; 50 for(i=1; i<=L->length; i++) { 51 L->r[0] = L->r[i]; 52 k = i; 53 for(j=i+1; j<=L->length; j++) { 54 if(L->r[j].key < L->r[0].key) { 55 L->r[0] = L->r[j]; 56 k = j; 57 } 58 } 59 L->r[k] = L->r[i]; 60 L->r[i] = L->r[0]; 61 printf("第%d次排序的结果为:",i); 62 print(L); 63 } 64 printf("\n"); 65 } 66 67 //主函数 68 int main() 69 { 70 SqList sq; 71 init(&sq); 72 SelectSort(&sq); 73 printf("排序之后的数组为:"); 74 print(&sq); 75 return 0; 76 }