习题7-1 选择法排序 (20 分)

浙大版《C语言程序设计(第3版)》题目集

  • 习题7-1 选择法排序 (20 分)
  • 二、题解
  • c代码

习题7-1 选择法排序 (20 分)

本题要求将给定的n个整数从大到小排序后输出。

输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例1:

4
5 1 7 6

输出样例1:

7 6 5 1

二、题解

选择排序是每一次从待排序的数据元素中选出最小(大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

分为三步:
1、从待排序序列中,找到关键字最小(大)的元素

2、如果最小(大)元素不是待排序序列的第一个元素,将其和第一个元素互换

3、从余下的 N - 1 个元素中,找出关键字最小(大)的元素,重复1、2步,直到排序结束

c代码

#include 

int a[15];

int main() {
    int n;
    scanf("%d", &n);
    
    for (int i = 0; i < n; i++)  scanf("%d", &a[i]);
    
    for (int i = 0; i < n - 1; i++) {    //选择排序
        int key = a[i];
        for (int j = i + 1; j < n; j++) {
            if(key < a[j]) {
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
            key = a[i];
        }
    }
    
    for (int i = 0; i < n - 1; i++) {      //冒泡排序
        for (int j = 0; j < n - 1; j++) {
            if(a[j] < a[j + 1]) {
                int t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }

    for (int i = 0; i < n; i++) {
        printf("%d", a[i]);
        if(i != n - 1)  printf(" ");
    }
    
    return 0;
}

你可能感兴趣的:(c语言,冒泡排序,PTA,考研,算法)