一、选择排序
基本过程
每次从未排序序列中选择出最小(最大)的数据,和未排序序列的第一个数据交换。
时间复杂度:O(n^2)
过程图示
算法实现
void selectSort(int A[],int len)
{
int i,j,k;
for(i=0;i<len;i++){
k=i;
for(j=i+1;j<len;j++){
if(A[j]<A[k])
k=j;
}
if(i!=k){
A[i]=A[i]+A[k];
A[k]=A[i]-A[k];
A[i]=A[i]-A[k];
}
}
}
二、冒泡排序
基本过程
每次都比较相邻的两个数据,把较大的交换到靠后的位置,则一趟排序之后就会得到无序序列中最大的那个数据。
**时间复杂度:**O(n^2)
过程图示
代码实现
void bubble_sort(int arr[], int len) {
int i, j;
for (i = 0; i < len - 1; i++) //外层循环控制趟数,总趟数为len-1
for (j = 0; j < len - 1 - i; j++) //内层循环为当前i趟数 所需要比较的次数
if (arr[j] > arr[j + 1])
swap(arr[j], arr[j + 1]);