插入算法很多,无论是在内功修炼,各种笔试面试都是相当有用的。接下来,将陆续将各种排序算法进行练习:
主要分为以下几个部分(其他后面学习补充):
一、插入类排序:1、直接插入排序;2、折半插入排序;3、希尔shell排序;
二、交换类排序:1、冒泡排序 ;2、快速排序;
三、选择类排序:1、简单选择; 2、堆排序;
本人多使用Java——开始吧!
首先推荐1、维基百科《排序算法》词条,图文并茂,很形象!2、学习博文《维基百科上的算法和数据结构链接很强大》,资料很多,保存学习!
一、先上维基的图:
图一、插入排序例子
分类 | 排序算法 |
---|---|
数据结构 | 数组 |
最差时间复杂度 | |
最优时间复杂度 | |
平均时间复杂度 | |
最差空间复杂度 | 总共 ,需要辅助空间 |
public class Insertion { public static void insertionSort(Comparable []data) { for(int index = 1; index < data.length; index++) { Comparable key = data[index]; int position = index; //shift larger values to the right while (position > 0 && data[position - 1].compareTo(key) > 0) { data[position] = data[position - 1]; position--; } data[position] = key; } } public static void main(String []args) { Comparable []c = {4, 9, 23, 1, 45, 27, 5, 2}; insertionSort(c); for(int i = 0; i < c.length; i++) System.out.println("插入排序:" + c[i]); } }
原文地址:http://blog.csdn.net/waycaiqi/article/details/44489511