八大排序算法-简单选择排序
2015-07-25 20:19
141 查看
基本思想
通过下标位置减少交换次数,在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。操作方法
第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1个记录中再选出关键码最小的记录与第二个记录交换;
以此类推…..
直到整个序列按关键码有序。
代码
#include<stdio.h> //简单选择排序 void selectSort(int r[],int n){ int min; int i,j,temp; for(i=0;i<n;i++){ min = i; //初始化本轮最小元素的位置 for(j=i+1;j<n;j++){ if(r[min]>r[j]){ min = j; //找到最小元素的下标 } } if(i != min){ //如果发生了改变 temp = r[i]; r[i] = r[min]; r[min] = temp; } } } //打印 void print(int r[],int n){ int i; for(i=0;i<n;i++){ printf("%3d",r[i]); } printf("\n"); } int main(){ int a[8] = {3,1,5,7,2,4,9,6}; int i; printf("排序前:\n"); print(a,8); printf("简单选择排序后:\n"); selectSort(a,8); print(a,8); return 0; }
执行结果
相关文章推荐
- [Java Web]Struts2加起来(一个)
- iOS开发工具-网络封包分析工具Charles
- 黑马程序员——练习题:向一维数组输入元素并全部输出
- android Fragment 入门
- 一个经典例子让你彻彻底底理解java回调机制
- C++静态库与动态库
- 服务器的线程模型
- 模板匹配
- 记阿里Java研发应届生电话面试
- 说说第二次配置Ubuntu14.04
- 过滤文本中的字符
- 浏览器的一些兼容问题
- 运用Intent在不同Activity中跳转tips
- Flume 开发者指南V1.5.2
- css 命名规范
- select和epoll的实现
- 动态键盘高度
- 杭电1016
- 黑马程序员——自学总结(四)Java IO技术之流对象
- RelativeLayout相对布局介绍及属性介绍