插入排序
2016-06-29 00:29
141 查看
public class InsertSort { public static void main(String[] args) { int[] nums = { 3, 25,2,3,35,-3,23,-1}; sort(nums); for (int i : nums) { System.out.print(i+" "); } } /** * * 插入排序步骤: * 1.从前往后,依次比较相邻的两个数 * 2.将较小值放在前面,将较大值放在后面,较小值索引为i * 3.从索引i为末尾,依次和前一个数比较大小,较小值放在前面,较大值放在后面,条件不符合就退出当前循环 * 4.继续执行父循环 * * * 简略写法 * for (int i = 1; i < data.length; i++) { * for (int j = i; (j > 0) && (data[j] < data[j - 1]); j--) { * SortTest.swap(data, j, j - 1); * } * } * @param nums */ public static void sort(int[] nums) { int i = 0; int temp = 0; while (i < nums.length-1) { if (nums[i] > nums[i + 1]) { // 如果后一个数小于前一个数,就交换位置 temp = nums[i]; nums[i] = nums[i + 1]; nums[i + 1] = temp; // 并开始与前面的数依次对比,比前面的数小就交换位置 int j = i; while(j>0 && nums[j-1] > nums[j]){ //如果前一个数大于后一个数,就交换位置 temp = nums[j]; nums[j] = nums[j-1]; nums[j-1] = temp; j--; } } i++; } } }
相关文章推荐
- 插入排序
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法