问题描述:
a为一个含有20个元素的数组,编写程序,把20个数据读入该数组,找出其中最大值和最小值,输出两者的值和响应的下标,最后将数组各元素从大到小的顺序重新排列,并将其输出来。
代码展示:
1 #include<stdio.h>
2 void BubbleSort(int a[],int len);
3 int main(){
4 int i,j;
5 int max=0,min=0;
6 int a[20];
7 for(i=0; i<20; i++){ //循环读入数字
8 scanf("%d",&a[i]);
9 }
10 for(i=1;i<20;i++){ //找最大最小值
11 if(a[max]>a[i]){
12 max = i;
13 }
14 if(a[min]<a[i]){
15 min = i;
16 }
17 }
18 printf("数组中最大值为:%d, 其原始下标为:%d\n",a[max],max);
19 printf("数组中最小值为:%d, 其原始下标为:%d\n",a[min],min);
20 BubbleSort(a,20);
21 printf("排序之后的序列为:");
22 for(i=0; i<20; i++){
23 printf("%d ", a[i]);
24 }
25 return 0;
26 }
27
28 void BubbleSort(int a[],int len){ //冒泡排序
29 int i,j;
30 int flag;
31 int temp;
32 for(i=0;i<len;i++){
33 flag = 1;
34 for(j=1;j<len-i; j++){
35 if(a[j-1]<a[j]){
36 temp = a[j-1];
37 a[j-1] = a[j];
38 a[j] = temp;
39 flag = 0;
40 }
41 }
42 if(flag == 1){
43 break;
44 }
45 }
46 }
运行截图: