#算法基础#选择和插入排序
系列文章: 由快速排序到分治思想
一、选择排序
这是一种最简单的排序算法 第一步他先找到数组中最小的元素,然后将它和本数组中第一个元素交换位置。然后把剩下的n-1个数算为一个数组。继续找到其中最小的 放到第二个位置。以此往复。于是恭喜你得到了大奖,一个有序的数组。哈哈
话不多说 看代码 :
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
多索引的稳定性:不稳定
应用: 程序员的日常
不知道 同学喜欢打牌吗,不知道你喜不喜欢 反正我很喜欢。而插入排序的特点就和抓牌时候是一样一样的。 你先从一大堆数组中抓起一个 然后再抓起一个按大小排序。在抓起一个按大小插进去 。。。。。。。。。。。好了 你手上就是一个理好的牌(数组)了。这就是插入排序。就是这么简单。
对于这个表示不想多说 扔代码吧
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
多索引的稳定性:稳定
应用: 程序员的日常
加入技术讨论群
为了方便大家相互交流学习,社区群人数已经2500+,欢迎大家加下面助手微信,拉大家进群,*交流。
喜欢QQ群的,可以扫描下面二维码:
欢迎大家通过二维码打赏支持技术社区(英雄请留名,社区感谢您,打赏次数超过50+):