首页
随机
最近更改
特殊页面
社群首页
参数设置
关于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"> </source> [[Category:Algorithm]]
返回
Selection sort
。