选择排序
来源:互联网 发布:寻求淘宝合作伙伴 编辑:程序博客网 时间:2024/04/30 01:31
选择排序的思想是每次遍历都会从待排序的数据中选择一个最小或最大值,所以称为选择排序。伪代码如下:
选择排序c代码如下:
完整的c程序如下:
SELECT-SORT for i <-- 1 to length[A]-1 do k <-- i for j <-- i+1 to length[A] do if A[j] < A[k] then k <-- j exchange A[k] <--> A[i]这里主要关心的是为什么只需要n-1次遍历,而不是n次遍历?因为n-1次遍历已经选择出了n-1个极小或极大值,剩下的一个数据自然是极大或极小值。
选择排序c代码如下:
void select_sort(int A[], int len){int i, j, k;for (i = 0; i < len-1; i++) {k = i;for (j = i+1; j < len; j++) {if (A[j] < A[k]) {k = j;}}if (k != i) {swap(&A[i], &A[k]);}}}
完整的c程序如下:
#include <stdio.h>void dump(int a[], int len){int i;for (i = 0; i < len; i++) {printf("%3d", a[i]);}printf("\n");}void swap(int *a, int *b){int tmp;tmp = *a;*a = *b;*b = tmp;}void select_sort(int A[], int len){int i, j, k;for (i = 0; i < len-1; i++) {k = i;for (j = i+1; j < len; j++) {if (A[j] < A[k]) {k = j;}}if (k != i) {swap(&A[i], &A[k]);}}}int main(void){int a[] = {3, 1, 0, 4, 6, 2, 9, 8, 7, 5};int len = sizeof(a) / sizeof(a[0]);dump(a, len);select_sort(a, len);dump(a, len);return 0;}
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 模糊查询,用?传值
- Search in Rotated Sorted Array
- SQL查询行转列
- 庞果网幸运数,一解,失败的例子吧
- Oracle高级应用之去重聚合函数
- 选择排序
- 谁是下一个价值19亿美元的91无线?谁又是下一个百度?
- UVa 10304 (黑书例题,DP)
- Android 日常使用学习笔记 ——SparseArray
- OpenMP学习之--数据环境(代码示例)
- 归并排序
- 巧用rownum查询连续季度
- Uninstall Toolbar Cleaner with WindowsUninstaller.Org Removal Tips
- Installing VMware Workstation 9.0.2 on Fedora 19