-->
当前位置:首页 > 题库 > 正文内容

程序填空题:排序算法

Luz4年前 (2021-06-19)题库2054
本题要求完成三种常用排序算法。

输入10个需要排序的序列,用空格隔开以-1结束。输入样例为:
```
8 9 7 5 3 1 2 4 6 10 -1
```
输出样例为:
```
直接插入排序:  1  2  3  4  5  6  7  8  9 10
冒泡排序:  1  2  3  4  5  6  7  8  9 10
简单选择排序:  1  2  3  4  5  6  7  8  9 10
```
```c++
#include
#include
#define LEN 20
typedef struct{
    int key;      //记录关键字
} RecordType;

void InsertSort(RecordType r[], int length);//直接插入排序
void SelectSort(RecordType r[], int length);//简单选择排序
void BubbleSort(RecordType r[], int length);//冒泡排序
void Print(RecordType r[],int length);
void Copy(RecordType r[],RecordType R[],int length);

int main(void){
    int length=0,temp;
    RecordType r[LEN+1],R[LEN+1];
    scanf("%d",&temp);
    while(temp!=-1) {
        r[++length].key=temp;
        scanf("%d",&temp); }
    Copy(r,R,length);    printf("直接插入排序:");    InsertSort(R,length);
    Copy(r,R,length);    printf("冒泡排序:");    BubbleSort(R,length);
    printf("简单选择排序:");    SelectSort(R,length);
    return 0;}

//直接插入排序
void InsertSort(RecordType r[], int length){

    for (int i = 2; i <= length; i++) {
        if(r[i].key < r[i-1].key) {
            r[0] = ;
            r[i] = ;
            int j=i-2;
            for(;r[0].key r[j + 1].key)  {
                r[0] = ;
                r[j + 1] = ;
                r[j] =;  }  } }
    Print(r,length);}

//简单选择排序
void SelectSort(RecordType r[], int length){
    for (int i = 1; i <= length - 1; i++)  {
        int k = i;
        for (int j = i + 1; j <= length; j++)  {
            if (r[j].key < r[k].key)  {
                k = j; } }
        if (k != i)  {
            r[0] = ;
            r[i] = ;
            r[k] = ;   } }
    Print(r,length);}

void Print(RecordType r[],int length){
    for(int i=1;i<=length;i++)
        printf("%3d",r[i].key);
    printf("\n");}

void Copy(RecordType r[],RecordType R[],int length){
    for(int i=1;i<=length;i++)
        R[i].key=r[i].key;}
```






答案: 第1空:r[i] 第2空:r[i-1] 第3空:r[0] 第4空:r[j+1] 第5空:r[j] 第6空:r[0] 第7空:r[i] 第8空:r[k] 第9空:r[0]


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。