排序:直接选择排序

Posted 乱说复习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序:直接选择排序相关的知识,希望对你有一定的参考价值。

直接选择排序


实现思想:

建立一个数组,假设内有n个无序元素;

第一次从R[0]~R[n-1]中选取最小值,与R[0]交换;

第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....;

第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....;

第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换;

总共通过n-1次,得到一个按排序码从小到大排列的有序序列。

比如:


插图,易于理解


实现代码:

void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp;}void selection_sort(int arr[], int len) { int i,j;  for (i = 0 ; i < len - 1 ; i++)  { int min = i; for (j = i + 1; j < len; j++)  if (arr[j] < arr[min])  min = j;  swap(&arr[min], &arr[i]);  }}


平均时间复杂度 O(n^2)
空间复杂度为 O(1)
稳定性:不稳定

以上是关于排序:直接选择排序的主要内容,如果未能解决你的问题,请参考以下文章