排序:直接选择排序

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)
稳定性:不稳定

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

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)

Js选择排序的问题。我这段代码,为何实现不了。

数据结构图解七大排序

算法小结-冒泡选择排序直接插入排序