【问题描述】选择法从大到小排序:输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。
【输入形式】
【输出形式】
【样例输入】5
4 5 1 7 9
【样例输出】The sorted order:9 7 5 4 1
#include <stdio.h>
int main()
{
int i,j,n,t;
printf("请输入个数:");
scanf("%d",&n);
int a[n];
for (i = 0; i < n; i++)
scanf("%d",&a[i]);
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n;j++) //循环
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("The sorted order:");
for (i = 0; i < n; i++)
printf("%d\t", a[i]);
return 0;
}
编译器支持C99标准时,可使用楼上答主的回答,编译器不支持的时候可以试试这个代码。
#include<stdio.h>
#define N 255
void Bubble_sort(int arr[], int size)
{
int j,i,tem;
for (i = 0; i < size-1;i ++) //size-1是因为不用与自己比较,所以比的数就少一个
{
int count = 0;
for (j = 0; j < size-1 - i; j++) //size-1-i是因为每一趟就会少一个数比较
{
if (arr[j] < arr[j+1]) //这是降序排法,前一个数和后一个数比较,如果前数大则与后一个数换位置
{
tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
count = 1;
}
}
if (count == 0) //如果某一趟没有交换位置,则说明已经排好序,直接退出循环
break;
}
}
int main()
{
int arr[N];
int i,num;
scanf("%d", &num); //排序个数
for (i = 0; i < num; i++) //接收用户的数值
{
scanf("%d", &arr[i]);
}
printf("The sorted order:");
Bubble_sort(arr, num);
for (i = 0; i < num; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}