冒泡法,改进冒泡法排序和反序算法
#include <stdio.h>
int sort_bubble(int arr[],int len);
int sort_bubblemod(int arr[],int len);
int reverse_half(int arr[],int len);
void main()
{
//int num[10]={3,8,9,2,5,7,6,0,4,1};
int num[10]={0,1,2,3,4,5,6,7,8,9};
for (int i=0;i<10;i++)
{
printf("%d/t",num[i]);
}
int cnt;
//cnt=sort_bubble(num,10);
//cnt=sort_bubblemod(num,10);
cnt=reverse_half(num,9);
printf("交换次数:%d/n",cnt);
for (i=0;i<10;i++)
{
printf("%d/t",num[i]);
}
//printf("Hello World");
char a;
scanf(&a);
}
int sort_bubble(int arr[],int len)
{
int cnt=0;
for(int i=0;i<len-1;i++)
{
for(int j=i+1;j<len;j++)
{
int tmp;
if(arr[j]>arr[i])
{
tmp=arr[j];
arr[j]=arr[i];
arr[i]=tmp;
cnt++;
}
}
}
return cnt;
}
int sort_bubblemod(int arr[],int len)
{
int cnt=0;
int tmp;
for(int i=0;i<len-1;i++)
{
int k=i;
for (int j=i+1;j<len;j++)
{
if(arr[j]>arr[k])
{
k=j;
}
}
if(k!=i)
{
tmp=arr[i];
arr[i]=arr[k];
arr[k]=tmp;
cnt++;
}
}
return cnt;
}
int reverse_half(int arr[],int len)
{
int cnt=0;
int tmp;
for(int i=0;i<len/2;i++)
{
tmp=arr[i];
arr[i]=arr[len-i-1];
arr[len-i-1]=tmp;
cnt++;
}
return cnt;
}