相信大多数初学者都是从冒泡排序入手的,那么今日就算是复盘,加深一下印象
概念:
从元素 0 开始,与元素 1 比较,如果 0 > 1,那么交换
接着元素 1 与 元素 2 比较,如果 1 > 2 ,交换
依次进行相邻数的比较,这样一轮下来,最大之就排到最末位置
下一轮接着从 0 开始,直到末尾位置 -1 ,如此循环
示例:
{3,5,6,2,2,3,4,1} | 3<>5 |
{3,5,6,2,2,3,4,1} | 5<>6 |
{3,5,6,2,2,3,4,1} | 6<>2 |
{3,5,2,6,2,3,4,1} | 6<>2 |
{3,5,2,2,6,3,4,1} | 6<>3 |
{3,5,2,2,3,6,4,1} | 6<>4 |
{3,5,2,2,3,4,6,1} | 6<>1 |
{3,5,2,2,3,4,1,6} |
代码:
// 冒泡排序
void bubbleSort(int *arr, int len)
{
if(arr == NULL || len < 2)
return;
int i,j;
for(i=len-1; i>0; i--)
{
for(j=0; j<i; j++)
{
if(arr[j] > arr[j+1])
swap(arr, j, j+1);
}
dispArr(arr, len);
}
}