首页
随机
最近更改
特殊页面
社群首页
参数设置
关于WHY42
免责声明
WHY42
搜索
用户菜单
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁Selection sort”︁的源代码
←
Selection sort
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[Image:Selection_sort_animation.gif|right|frame|选择排序]] 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。 =算法描述= #首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 #再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 #重复第二步,直到所有元素均排序完毕。 =示例代码= ==C== <source lang="c"> void selection_sort(int arr[], int len) { int i, j, min, temp; for (i = 0; i < len - 1; i++) { min = i; for (j = i + 1; j < len; j++) if (arr[min] > arr[j]) min = j; if (min != i) { temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } } </source> ==C++== <source lang="cpp"> template<typename T> void selection_sort(T arr[], int len) { int i, j, min; T temp; for (i = 0; i < len - 1; i++) { min = i; for (j = i + 1; j < len; j++) if (arr[min] > arr[j]) min = j; if (min != i) { temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } } </source> ==C#== <source lang="csharp"> static void selection_sort<T>(T[] arr) where T : System.IComparable<T>{ int i, j, min, len = arr.Length; T temp; for (i = 0; i < len - 1; i++) { min = i; for (j = i + 1; j < len; j++) if (arr[min].CompareTo(arr[j]) > 0) min = j; if (min != i) { temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } } </source> ==Java== <source lang="java"> </source> ==Python== <source lang="python"> def selection_sort(L): N = len(L) exchanges_count = 0 for i in range(N-1): min_index = i for j in range(i+1, N): if L[min_index] > L[j]: min_index = j if min_index != i: L[min_index], L[i] = L[i], L[min_index] exchanges_count += 1 print('iteration #{}: {}'.format(i, L)) print('Total {} swappings'.format(exchanges_count)) return L testlist = [17, 23, 20, 14, 12, 25, 1, 20, 81, 14, 11, 12] print('Before selection sort: {}'.format(testlist)) print('After selection sort: {}'.format(selection_sort(testlist))) </source> [[Category:Algorithm]]
返回
Selection sort
。