给一段序列,求出升序排序时最少需要的交换次数。
用冒泡排序法,计算交换次数即可。
代码:

1 #include<stdio.h> 2 long bubbleSort(int arr[],int n)/*对arr数组的前n个数进行冒泡排序*/ 3 { 4 int i,j,t,flog; 5 long k=0; 6 for(i=0;i<n-1;i++) 7 { 8 flog=0; 9 for(j=0;j<n-i-1;j++) 10 { 11 if(arr[j+1]<arr[j]) 12 { 13 t=arr[j+1]; 14 arr[j+1]=arr[j]; 15 arr[j]=t; 16 flog=1; 17 k++; 18 } 19 } 20 if(!flog) return k;/*没有进行交换,排序提前结束*/ 21 } 22 return k; 23 } 24 25 int main() 26 { 27 int n,a[1000],i; 28 while(scanf("%d",&n)!=EOF) 29 { 30 for(i=0;i<n;i++) 31 { 32 scanf("%d",&a[i]); 33 } 34 printf("Minimum exchange operations : %d ",bubbleSort(a,n)); 35 } 36 return 0; 37 }