算法之选择排序【C语言】
来源:互联网 发布:纳尔逊勋爵 知乎 编辑:程序博客网 时间:2024/05/16 09:13
选择排序
思想:在一组数据中,遍历并找到最小(大)值,与第0位交换,然后从第1位开始遍历,找到次小(大)值,与第1位交换,以此类推,直到数据按照一定顺序排列。
循环不定式:
初始化:把第0位当作最小值,遍历第1位至数组末尾,找到最小值,与第0位交换;
保持:把第n位当作从n开始到数组末尾的最小值,遍历第n+1位至数组末尾,找到最小值,与第n位交换;
终止:直到遍历到数组末尾。
时间复杂度:O(n2)
代码如下:
#include <stdio.h>#define MAXSIZE 10void select_sort(int array[]);/** * 选择排序,从小到大排序 */void select_sort(int array[]){ int index;//索引,当前要存储最小值的位置 int tmp_index;//索引,当前遍历值的位置 int small_index;//索引,当前遍历值中最小值的位置 int small_value;//当前范围内的最小值 index = 0; while(index < MAXSIZE)//存储最小值的位置要小于数组个数,当位置等于索引个数时,说明排序完毕 { small_value = array[index];//当前位置的值作为最小值 small_index = index; tmp_index = index + 1;//从当前位置的下一个位置开始遍历,直到数组最后一个元素 while(tmp_index < MAXSIZE) { if(small_value > array[tmp_index])//在当前范围内,查找最小值及其位置 { small_value = array[tmp_index]; small_index = tmp_index; } tmp_index ++; } if(small_index != index)//如果找到比当前位置的值更小的值,更换当前位置的值与最小值调换 { array[small_index] = array[index]; array[index] = small_value; } index ++; }}/** * 主程序 */ int main() { int array[MAXSIZE] = {4,-2,2,0,-1,3,5,1,4,7};//待排序的数组 int index = 0;//索引 //打印原有数组 printf("Oringin array: "); while(index < MAXSIZE) { printf("%d ",array[index]); index++; } printf("\n"); //排序 select_sort(array); //打印排序后数组 index = 0; printf("Sort array: "); while(index < MAXSIZE) { printf("%d ",array[index]); index++; } printf("\n"); return 0; }
- 算法之选择排序【C语言】
- C语言之排序算法---选择法排序
- 排序算法之选择排序(C语言实现)
- C语言之选择排序
- C语言之选择排序
- C语言之选择排序
- 排序算法c语言描述---选择排序
- C语言之桶排序,冒泡排序,快速排序,选择排序算法学习
- 排序算法之选择排序--Java语言
- C语言排序之选择排序(一)
- C语言之冒泡排序、选择排序
- C语言排序之选择排序篇
- C--经典算法之排序---选择排序
- C排序算法之选择排序法
- 选择排序算法的C语言实现
- 选择排序算法(C语言实现)
- 选择排序算法C语言实现
- C语言 简单选择排序算法
- JavaSE——Java网络编程
- 实用make最佳实践
- 随机模拟的基本思想和常用采样方法(sampling)
- LCD驱动分析:时序的分析
- 操作系统_再识(Linux 驱动模型)
- 算法之选择排序【C语言】
- uva 123Searching Quickly
- Linux块设备驱动
- 块设备驱动编写总结
- “2 overloads have no legal conversion for 'this' pointer”错误
- 杭电2057
- 操作系统_再识(Linux从文件到字符设备)
- VS2010命令行下查看虚函数表和类内存布局
- 展望2025:决定未来经济的12大颠覆技术