一、冒泡排序
冒泡排序的基本思路就是通過不斷的比較相鄰兩個數的大小,第一層循環0--->length-1,然后第二層不斷把大的一個數往后移動,每輪循環都會把最大的那個數放到最后。最多經過N-1輪就能完全排序好。如果優化下算法,還能更快。
二、C語言一般實現
#include<stdio.h>
#include<stdlib.h>
void buble_sort(int arr[], int length);
void buble_sort(int arr[], int length)
{
int i, j, max;
for(i=0, i<length-1, i++)
{
for(j=0, j<length-i-1, j++)
{
if(a[j]>a[j+1])
{
max = a[j];
a[j] = a[j+1];
a[j+1] = max;
}
}
}
}
int main()
{
int arr_num[] = {17, 23, 5, 54, 13, 36, 7};
bubble_sort(arr_num, 7);
for(int i=0; i<7; i++)
printf("%d ", arr_num[i]);
printf("\n");
system("pause");
return 0;
}
三、C 語言改進實現
#include<stdio.h>
#include<stdlib.h>
void better_buble_sort(int arr[], int length);
void better_buble_sort(int arr[], int length)
{
int i, j, max;
//設置標記位,sorted是否排序好
bool sorted = true;
for(i=0, i<length-1, i++)
{
for(j=0, j<length-i-1, j++)
{
if(a[j]>a[j+1])
{
//如果本輪循環,有未排序好的數,就將設置的標記改為false,繼續下輪循環
sorted = false
max = a[j];
a[j] = a[j+1];
a[j+1] = max;
}
}
}
if(sorted) break;
}