概述
简单排序
插入排序
插入排序(Insertion sort)是一种简单直观且稳定的排序算法。
需求:
将数组排序
排序前:{9,7,8,2,5,1,3,6,4}
排序原理:
- 把所有的元索分为两组,已经排序的和未排序的。
- 找到未排序的组中的第一个元索,向已经排序的组中进行插入。
- 倒叙遍历已经排序的元素,依次和待插入的元索进行比较,直到找到一个元索小于等于待插入元索,那么就把待插入元索放到这个位置,其他的元素向后移动一位。
插入排序API设计:
类名 | Insertion |
---|---|
构造方法 | Insertion():创建Insertion对象 |
成员方法 | 1. public static void sort(Comparable[] a):对数组内的元素进行排序 2. private static boolean greater(Comparable v,Comparable w):判断v是否大于w 3. private static void exchange(Comparable[] a,int i,int j):交换a数组中,索引i和索引j处的值 |
插入排序的代码实现:
//Insertion类
public class Insertion {
//对数据a中的元素进行排序
public static void sort(Comparable[] a){
for (int i=1;i < a.length;i++){
for (int j=i;j > 0;j--){
//比较索引j处的值和索引j-1处的值,如果索引j-1处的值比索引j处的值大,则数据交换;
//若索引j-1处的值比索引j处的值小,则就是合适位置,退出循环
if (greater(a[j-1],a[j])){
exchange(a,j-1,j);
}else {
break;
}
}
}
}
//比较v元素是否大于w元素
private static boolean greater(Comparable v,Comparable w){
return v.compareTo(w)>0;
}
//数组元素i和j交换位置
private static void exchange(Comparable[] a,int i,int j){
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
//test类
public static void main(String[] args) {
Integer[] arr = {9,7,8,2,5,1,3,6,4};
Insertion.sort(arr);
System.out.println(Arrays.toString(arr));
}
比较次数为:1 + 2 + … + (n-1)
时间复杂度:O(n2)
空间复杂度:O(1)
稳定性:稳定
参考资料:黑马教程
其他算法:
数据结构的简单排序算法——冒泡排序算法.
数据结构的简单排序算法——选择排序算法.
最后
以上就是发嗲保温杯为你收集整理的数据结构的简单排序算法——插入排序算法简单排序的全部内容,希望文章能够帮你解决数据结构的简单排序算法——插入排序算法简单排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复