冒泡排序 源碼
//冒泡排序的優化
//優化:讓已有的算法更加快速、省時,省空間
#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語言)高手幫助你解決難題,一起互動,提高大家的編程水平
評論列表