给一段序列,求出升序排序时最少需要的交换次数。
用冒泡排序法,计算交换次数即可。
代码:
#include<stdio.h>
long bubbleSort(int arr[],int n)/*对arr数组的前n个数进行冒泡排序*/
{
int i,j,t,flog;
long k=;
for(i=;i<n-;i++)
{
flog=;
for(j=;j<n-i-;j++)
{
if(arr[j+]<arr[j])
{
t=arr[j+];
arr[j+]=arr[j];
arr[j]=t;
flog=;
k++;
}
}
if(!flog) return k;/*没有进行交换,排序提前结束*/
}
return k;
} int main()
{
int n,a[],i;
while(scanf("%d",&n)!=EOF)
{
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("Minimum exchange operations : %d\n",bubbleSort(a,n));
}
return ;
}