冒泡排序、选择排序

时间:2022-11-30 22:07:35
下面是两种最基本的排序:冒泡排序、选择排序.复杂度均为O(n^2)。

冒泡排序:

bool BubbleSort(int arr[],int len)
{
if(arr == NULL || len <= 0)
{
return false;
}
int i,j,temp;
int flag = 1;
for(i = 0; i < len -1 && flag; i++)//注意:i < len-1 而不是len
{
flag = 0;//flag标志可以提前结束循环
for(j = 0; j < len-1-i; j++)
{
if(arr[j] > arr[j+1])//大的数通过交换"冒泡"到后面
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = 1;
}
}
}
return true;
}

选择排序:

bool SelectionSort(int arr[],int len)
{
if(arr == NULL || len <= 0)
{
return false;
}
int i,j,temp,min;
for(i = 0; i < len; i++)
{
min = i;//min用来记录最小的数的下标
for(j = i+1; j< len; j++)
{
if(arr[min] > arr[j])
{
min = j;
}
}
if(min != i)
{//选取最小的数与第i个元素交换
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return true;
}