排序算法(2)--选择排序SelectionSort

步骤:

在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
最坏情况:O(n^2),
最好情况:O(n^2)。
代码实现:

#include <stdio.h>
#include <assert.h>
void SelectSort(int *arr, int len)
{
assert(arr != NULL);
int i,j;
int min;//记录最小值的下标
int tmp;
for(i=0; i
{
min = i;
for(j=i+1; j
{
if(arr[j] < arr[min])
{
min = j;
}
}
tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
int main()
{
int arr[] = {0,3,5,2,7,9,12,6,8};
int len = sizeof(arr)/sizeof(arr[0]);
SelectSort(arr,len);
for(int i=0; i
{
printf("%d\n",arr[i]);
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37895918/article/details/82806737