问题描述:
用冒泡排序算法对20个数进行排序后输出,并输出每个元素多对应的原来的次序
代码展示:
1 #include<stdio.h>
2 void BubbleSort(int a[][20]);
3 int main(){
4 int a[2][20];
5 int i,j;
6 int x;
7 for(i=0;i<20;i++){
8 a[0][i] = i+1;
9 }
10 for(i=0;i<20;i++){
11 scanf("%d",&a[1][i]);
12 }
13 BubbleSort(a);
14 printf("排序后的序列为:");
15 for(i=0;i<20;i++){
16 printf("%d ",a[1][i]);
17 }
18 printf("\n排序后的序列的原次序为:");
19 for(i=0;i<20;i++){
20 printf("%d ",a[0][i]);
21 }
22
23 return 0;
24 }
25 void BubbleSort(int a[][20]){
26 int flag;
27 int i,j;
28 int temp;
29 for(i=0;i<20;i++){
30 flag = 1;
31 for(j=1;j<20-i;j++){
32 if(a[1][j-1]>a[1][j]){
33 temp = a[1][j-1]; //元素交换
34 a[1][j-1] = a[1][j];
35 a[1][j] = temp;
36 temp = a[0][j-1]; //位序交换
37 a[0][j-1] = a[0][j];
38 a[0][j] = temp;
39 flag = 0;
40 }
41 }
42 if(flag == 1){
43 return;
44 }
45 }
46 return;
47 }
运行截图: