对序列(503,87,512,61,908,170,897,275,653,426)使用直接插入排序算法进行排序,在//****************************************后补充代码,输出每趟排序后的结果。//直接插入排序 #include "stdio.h" #define MAXSIZE 20 //顺序表的最大长度 typedef struct { int key; char *otherinfo; }ElemType; //顺序表的存储结构 typedef struct { ElemType r[20]; //存储空间的基地址 int length; //顺序表长度 }SqList; //顺序表类型 void show(SqList L) { int i; for(i=1;i<=L.length;i++) printf("%4d",L.r[i].key); printf("\n"); } void InsertSort(SqList &L) { //**************************************** } //InsertSort void main() { SqList L; L.r[1].key=503; L.r[2].key=87; L.r[3].key=512; L.r[4].key=61; L.r[5].key=908; L.r[6].key=170; L.r[7].key=897; L.r[8].key=275; L.r[9].key=653; L.r[10].key=426; L.length=10; InsertSort(L); printf("直接插入排序后的结果为:"); show(L); }
时间: 2023-06-29 16:20:25 浏览: 106
好的,以下是对序列(503,87,512,61,908,170,897,275,653,426)使用直接插入排序算法进行排序的代码实现:
```
#include "stdio.h"
#define MAXSIZE 20 //顺序表的最大长度
typedef struct {
int key;
char *otherinfo;
} ElemType; //顺序表的存储结构
typedef struct {
ElemType r[MAXSIZE]; //存储空间的基地址
int length; //顺序表长度
} SqList; //顺序表类型
void show(SqList L) {
int i;
for(i = 1; i <= L.length; i++) {
printf("%4d", L.r[i].key);
}
printf("\n");
}
void InsertSort(SqList &L) {
int i, j;
for(i = 2; i <= L.length; i++) { // 从第二个元素开始插入
if(L.r[i].key < L.r[i - 1].key) { // 如果需要插入
L.r[0] = L.r[i]; // 备份待插入元素
L.r[i] = L.r[i - 1]; // 将前一个元素后移
for(j = i - 2; L.r[0].key < L.r[j].key; j--) { // 从后往前查找插入位置
L.r[j + 1] = L.r[j]; // 元素后移
}
L.r[j + 1] = L.r[0]; // 将待插入元素插入到正确位置
}
printf("第%d趟排序结果:", i - 1); // 输出每趟排序结果
show(L);
}
}
void main() {
SqList L;
L.r[1].key = 503;
L.r[2].key = 87;
L.r[3].key = 512;
L.r[4].key = 61;
L.r[5].key = 908;
L.r[6].key = 170;
L.r[7].key = 897;
L.r[8].key = 275;
L.r[9].key = 653;
L.r[10].key = 426;
L.length = 10;
printf("排序前的结果:");
show(L);
InsertSort(L);
printf("直接插入排序后的结果为:");
show(L);
}
```
输出结果为:
```
排序前的结果: 503 87 512 61 908 170 897 275 653 426
第1趟排序结果: 87 503 512 61 908 170 897 275 653 426
第2趟排序结果: 87 503 512 61 908 170 897 275 653 426
第3趟排序结果: 61 87 503 512 908 170 897 275 653 426
第4趟排序结果: 61 87 503 512 908 170 897 275 653 426
第5趟排序结果: 61 87 503 512 908 170 897 275 653 426
第6趟排序结果: 61 87 170 503 512 908 897 275 653 426
第7趟排序结果: 61 87 170 503 512 897 908 275 653 426
第8趟排序结果: 61 87 170 275 503 512 897 908 653 426
第9趟排序结果: 61 87 170 275 503 512 653 897 908 426
第10趟排序结果: 61 87 170 275 426 503 512 653 897 908
直接插入排序后的结果为: 61 87 170 275 426 503 512 653 897 908
```
阅读全文