选择排序
2017-11-15 11:00
218 查看
选择排序
算法概括:
·平均时间复杂度:O(n^2)·原理分析:对于N个无序数,第一轮将N个元素中最小(大)的元素与第一个元素交换,第二轮将除第一个的剩下的N-1个元素中最小(大)的元素与第二个元素交换……第N-1轮将最后剩下的2个元素中的最小(大)的元素与第N-1个元素交换。即完成选择排序。
C语言代码实现(以从小到大排序为例):
#include <stdio.h> #include <stdlib.h> void swap(int *x,int *y)//我是萌萌哒的交换函数 { int temp; temp=*x; *x=*y; *y=temp; } void Selection_sort(int *a,int n) { int i,j,min_x,min;//min用来储存剩下无序元素中最小的元素的值,min_x则用于储存它的下标 for (i=1;i<=n-1;i++)//总共有N-1轮 { min=99999999;//记录最小(大)值的变量初始化尽量大(小),而且每次排完一轮后必须再次初始化哦 for (j=i;j<=n;j++)//开始找第i-1个元素中后面剩下元素的最小的那个啦 { if (a[j]<min) { min=a[j]; min_x=j; } } if (i!=min_x)//如果最小的就在它应该在的位置就没必要交换了 swap(&a[i],&a[min_x]);//这时候之前记录的下标就派上用场了 } } int main(void) { int n,i; scanf ("%d",&n); int a[n+1]; for (i=1;i<=n;i++) scanf("%d",&a[i]); Selection_sort(a,n);//开始选择排序啦啦啦啦~ for (i=1;i<=n;i++) printf ("%d ",a[i]); return 0; }
相关文章推荐
- 直接选择排序
- 选择排序
- PHP 算法01之选择排序
- 冒泡排序、选择排序
- 重写的GridView,支持CheckBox选择,DataTable和List排序,SQL分页等
- 排序之----冒泡,直接插入,选择排序
- (11)选择排序之二 树形选择排序
- 简单排序二--冒泡排序、选择排序、插入排序练习
- 简单选择排序
- Java学习之数组选择排序与Arrays工具类
- java直接选择排序
- 【算法】选择排序
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- 简单选择排序
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- [排序算法,选择排序]--快速排序
- 选择排序之简单选择
- 排序1+2:交换排序(ExchangeSort),选择排序(SelectSort)和插入排序(Insertsort)
- 直接选择排序举例
- 【数据结构和算法】排序算法之二:选择排序和堆排序