一、冒泡排序
冒泡排序的基本思路就是通过不断的比较相邻两个数的大小,第一层循环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("
");
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;
}