0023 用冒泡排序算法对20个数进行排序后输出,并输出每个元素多对应的原来的次序
问题描述:
用冒泡排序算法对20个数进行排序后输出,并输出每个元素多对应的原来的次序
代码展示:
1 #include2 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 }
运行截图: