前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >#算法基础#选择和插入排序

#算法基础#选择和插入排序

作者头像
大数据和云计算技术
发布2018-03-08 17:33:06
6850
发布2018-03-08 17:33:06
举报

算法是基础,小蓝同学准备些总结一系列算法分享给大家,这是第二篇《选择和插入排序》,非常赞!希望对大家有帮助,大家会喜欢!

系列文章:

由快速排序到分治思想

一、选择排序

这是一种最简单的排序算法 第一步他先找到数组中最小的元素,然后将它和本数组中第一个元素交换位置。然后把剩下的n-1个数算为一个数组。继续找到其中最小的 放到第二个位置。以此往复。于是恭喜你得到了大奖,一个有序的数组。哈哈

话不多说 看代码 :

代码语言:javascript
复制
public static void sort(Comparable[] a) {
 int N = a.length;
 for (int i = 0; i < N; i++) {
 int min = i;
 for (int j = i + 1; j < N; j++) {
 if (less(a[j], a[min])) //对比
 min = j;
 exch(a, i, min);   //交换
            }
        }
    }

特性:

时间复杂度:N²

空间复杂度:N

多索引的稳定性:不稳定

应用: 程序员的日常

二、插入排序

不知道 同学喜欢打牌吗,不知道你喜不喜欢 反正我很喜欢。而插入排序的特点就和抓牌时候是一样一样的。 你先从一大堆数组中抓起一个 然后再抓起一个按大小排序。在抓起一个按大小插进去 。。。。。。。。。。。好了 你手上就是一个理好的牌(数组)了。这就是插入排序。就是这么简单。

对于这个表示不想多说 扔代码吧

代码语言:javascript
复制
 public static void sort(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);
            }
        }
    }

特性:

时间复杂度:N²

空间复杂度:N

多索引的稳定性:稳定

应用: 程序员的日常

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据和云计算技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档