冒泡排序 源码
//冒泡排序的优化
//优化:让已有的算法更加快速、省时,省空间
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int arr[10000];
//c / c++
void betterbubble(int * arr,int n)
{
int i,j;
int count = 0;
for(i = 0;i < n - 1;i++)
{
int flag = 1;
for(j = 0;j < n -1 -i;j++)
{
count++;
if(arr[j] > arr[j + 1]) //后面小于前面的 交换
{
flag = 0;
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
if(flag)
break;
}
printf("better-bubble = %d\n",count);
}
void bubble(int * arr,int n)
{
int i,j;
int count = 0;
for(i = 0;i < n - 1;i++)
{
for(j = 0;j < n -1 -i;j++)
{
count++;
if(arr[j] > arr[j + 1]) //后面小于前面的 交换
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("bubble count = %d\n",count);
}
int fun(int * arr,int n) //检测函数
{
int i;
for(i = 0;i < n - 1;i++)
{
if(arr[i] > arr[i + 1])
{
printf("error\n");
return 1;
}
}
return 0;
}
int main()
{
srand(time(NULL));
int i;
for(i = 0;i < 10000;i++)
arr[i] = i;
printf("%d\n",fun(arr,10000));
bubble(arr,10000);
printf("%d\n",fun(arr,10000));
return 0;
}
关注微信公众号:编程语言
有更多(C/C++语言,linux,JAVA语言)高手帮助你解决难题,一起互动,提高大家的编程水平