简单选择排序
算法思想:从头至尾顺序扫描序列,找出最小的一个关键字,和第一个关键字交换,接着从剩下的关键字中继续这种选择和交换,直至序列有序。
时间复杂度分析:
空间复杂度:O(1)
- 两层循环的执行次数和初始序列无关,外层循环执行n次,内层循环执行n-1次,总执行次数:(n-1+1)(n-1)/2 = n(n-1)/2,即时间复杂度为O(n^2)
代码:
void Select_sort(int arr[],int n) //选择排序
{
int i,j,k,temp;
for(i=0;i<n;i++)
{
k = i; //k保存当前无序序列中最小的值,初始为arr[i]
for(j=i+1;j<n;j++) //从无序序列中选择出一个最小的值
{
if(arr[k]>arr[j])
{
k = j;
}
}
//将当前无序序列最小值与第i个数交换
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}