博客
关于我
简单选择排序
阅读量:302 次
发布时间:2019-03-03

本文共 1210 字,大约阅读时间需要 4 分钟。

3.简单选择排序

算法思想

每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。

步骤

(1)从待排序序列中,找到关键字最小的元素;

(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

(3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。

图示说明

实现

private static int[] selectSort(int [] array, int low, int high) {	  int index=0;	  int temp;	  int i=low,j;	  for(;i
array[j]) { index=j; } } temp=array[index]; array[index]=array[i]; array[i]=temp; } return array; }

简单分析

时间复杂度 O(n^2)

空间复杂度O(1)

不满足稳定排序

优化

思路就是同时从两边选最大值和最小值

实现

private static int[]  selectSort2(int []array, int left , int right)   {      int i, min, max;      int temp;            for (; left
array[max]){ max = i; } } if (min != left) //在原地就不交换 { temp = array[left]; array[left] = array[min]; array[min] = temp; if (max == left) //如果最大值在最左边,最左边已经存了最小值,所以最大值最新的下标应该是本来最小值的下标 { max = min; } } if (max != right) { temp =array[right]; array[right] = array[max]; array[max] = temp; } } return array; }

 

转载地址:http://hlfq.baihongyu.com/

你可能感兴趣的文章
Kotlin实现冒泡排序
查看>>
NodeJS下TypeScript环境安装
查看>>
汽车后市场,小程序为何独占鳌头
查看>>
短视频小程序,互联网新风口
查看>>
Mybatis-plus代码生成器模板(MySQL数据库)
查看>>
使用redis管理Mybatis的二级缓存
查看>>
使用redis管理Mybatis-Plus的二级缓存
查看>>
Mybatis中的SQL语句等于、不等于和模糊查询的语法
查看>>
使用 github 搜索
查看>>
java有包名的类访问没有包名的类
查看>>
整型关键字的散列映射
查看>>
多位水仙花数-python(出现运行超时?不妨用减法计算)
查看>>
地下迷宫探索(后两个测试点无法通过?这里有你想要的答案)
查看>>
小白看完都会了!阿里云大师深入拆解Java虚拟机,看完这一篇你就懂了
查看>>
【IT之路】FAQ-Hibernate报错:表不存在
查看>>
VBA之正则表达式(19)-- 相对引用转绝对引用
查看>>
巧用VBA统一数字单位
查看>>
Transpose实现数组行列转置的限制
查看>>
用float/double作为中转类型的“雷区”
查看>>
golang中interface的一些语法缺陷的改进
查看>>