算法学习--选择排序和插入排序
来源:互联网 发布:linux firefox找不到 编辑:程序博客网 时间:2024/06/07 02:16
1.选择排序
思想:首先,找到数组中最小的那个元素,其次,将它与数组中第一个元素交换位置。然后,在剩下的元素中在找到最小的值,将它与数组中第二个元素交换位置。这种不断选择最小元素的排序称为选择排序。
代码实现:1.首先是比较两个值大小的方法,使用了compareto方法,改方法返回0,1,-1.若v<w返回负1。
private static boolean less(Comparable v,Comparable w) { return v.compareTo(w)<0; }2.交换两个元素的位置
private static void exch(Comparable[] a,int i,int j) { Comparable t=a[i]; a[i]=a[j]; a[j]=t; }
3.选择排序算法。
public static void sort(Comparable[] a){ int N=a.length; for(int i=0;i<N;i++) { //内循环,将a[i]与a[i+1]到a[n-1]中的最小元素交换 int min=i;//用min作为最小元素的索引,先假设a[i]为最小元素 for(int j=i+1;j<N;j++) {//如果a[min]>a[j] 交换
if(less(a[j], a[min])) { min=j; exch(a, min, j); } } } }
2.插入排序
思想:与选择排序一样,当前索引左边的所有元素都是有序地,但他们的最终位置还不确定,所以将大的元素排到右边去,当索引
到达数组的最右边时,排序完成。
代码实现:1.插入排序算法
public static void SelectSort(Comparable[] a){ int N=a.length; for(int i=0;i<N;i++){ //内循环中只判断当前索引是否比前一个索引处的值小,如果小,交换位置,保证了当前索引左边的是排序好的。 for(int j=i;j>0&&less(a[j], a[j-1]);j--) { exch(a, j, j-1); } } }
3.总结
首先,我们可以发现排序算法的问题,就是不管当前数组是否为有序数组,或者接近有序数组,它都要进行循环。所以这个
算法的效率是不够高的。但是插入算法能够立即发现每个元素是否在合适的位置上,而且循环判断与访问数组的次数明显减少,效率
较快。
阅读全文
0 0
- 算法学习--选择排序和插入排序
- 算法学习一选择排序和插入排序
- 排序算法学习-选择插入排序
- 排序算法之二-选择排序和插入排序
- 排序算法笔记_____2(选择排序和插入排序)
- 排序算法-选择排序和插入排序比较(待续未完)
- 插入排序、选择排序和快速排序的算法实现
- 排序算法之选择排序和插入排序
- java算法篇---插入排序和选择排序算法
- 【算法】插入排序/冒泡排序/选择排序
- 数据结构--排序算法(插入排序&&选择排序)
- 《算法》选择排序、插入排序、冒泡排序
- 插入排序和选择排序
- 选择排序和插入排序
- 选择排序和插入排序
- 选择排序和插入排序
- 选择排序和插入排序
- 插入排序和选择排序
- 服务器端配置跨域
- 关系运算符和逻辑运算符的应用
- springmvc基本配置
- 创世纪
- 服务器搭建记录
- 算法学习--选择排序和插入排序
- 第三方登录
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络(转载)
- 文章标题
- PHP使用Memcache详解
- SQL——视图作用
- 第7章:自动抛出异常的应用
- linux终端配置:颜色和字体
- 如何在vscode配置php开发环境