一、排序算法分类
常见的排序算法有七种:
![](https://i-blog.csdnimg.cn/blog_migrate/707e9da96b45a39b83e8c2130107bd84.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9ace49569f5e17c8ab104ac50b26a8a.png)
二、冒泡排序
1、普通冒泡排序
思想:每次从最后(即最下面)开始迭代,第i次迭代使从i~end中最小的数冒泡到i的位置,从而实现排序。
实现代码:
void bubbleSort(int arr[], int length) //从小到大排,每次将最小的冒泡到最前面
{
int i,j;
int temp;
for(i = 0; i < length-1; i++)
{
for(j = length-1; j > i; j--)
{
if( arr[j-1] > arr[j] )
{
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
}
2、改进冒泡排序
改进最简单的办法就是立一个flag。
实现代码:
void bubbleSort(int arr[], int length) //从小到大排,每次将最小的冒泡到最前面
{
int i,j;
int temp;
int flag = 1;
for(i = 0; i < length-1 && flag; i++)
{
flag = 0;
for(j = length-1; j > i; j--)
{
if( arr[j-1] > arr[j] )
{
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
flag = 1; //如果有数据交换,则flag为true
}
}
}
}