排序---1.插入排序
来源:互联网 发布:unity3d sharesdk 编辑:程序博客网 时间:2024/06/16 13:01
插入排序思想:
使用java代码加以实现:
是否
package chapter5;public class InsertSort {/* *注意:递增插入排序 5,6,7,8,9 *且a[0]为哨兵。 * */public static int[] insertSort(int...a){//外层for循环对应第i趟,欲插入的元素为a[i]。且总共走完length-2趟就保证有序。//(因为这里使用数组第一个a[0]是哨兵,数组实际长度为length-1,排序length-2次就有序了)for(int i = 2; i <= a.length - 1; i++){if(a[i] < a[i-1]){//只有a[i] < a[i-1],才比较然后插入a[0] = a[i];a[i] = a[i-1];//复制为哨兵int j;for(j = i -2; a[0] < a[j]; j--){//记录后移a[j + 1] = a[j];}a[j + 1] = a[0];//插入到正确的位置}}return a;}/* *注意:递减插入排序 9,8,7,6,5 *且a[0]为哨兵。 * */public static int[] insertSortDesc(int...a){//外层for循环对应第i趟,欲插入的元素为a[i]。且总共走完length-2趟就保证有序。//(因为这里使用数组第一个a[0]是哨兵,数组实际长度为length-1,排序length-2次就有序了)for(int i = 2; i <= a.length - 1; i++){if(a[i] > a[i-1]){//只有a[i] > a[i-1],才比较然后插入a[0] = a[i];a[i] = a[i-1];//复制为哨兵int j;for(j = i -2; a[0] > a[j]; j--){//记录后移a[j + 1] = a[j];}a[j + 1] = a[0];//插入到正确的位置}}return a;}public static void main(String[] args) {int[] a = {0,23,79,6,4,3,13,19}; //a[0]为哨兵,并不是数组中待排序的数据。int[] result = insertSort(a);System.out.println("数组递增排序结果:");for(int i = 1; i < result.length; i++){System.out.print(result[i] + " ");}System.out.println();int[] resultDesc = insertSortDesc(a);System.out.println("数组递减排序结果:");for(int i = 1; i < resultDesc.length; i++){System.out.print(resultDesc[i] + " ");}}}
运行结果:
冒泡排序 经过优化后 生成了快速排序算法。
1 0
- 排序---1.插入排序
- 1. 排序-插入类排序
- 1.排序(插入排序)
- 排序算法1.插入排序
- 插入排序-【插入排序】
- 1.插入排序
- 1.直接插入排序
- 1.插入排序
- 算法---1.插入排序
- 排序---1.插入
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 类文件的载入-自动加载机制spl_autoload_register
- 3-3 构造函数的调用(高级)
- webstorm in place部署时出现拒绝连接的解决办法
- android_studio多渠道打包
- My SQL 删除数据
- 排序---1.插入排序
- window.parent与window.opener
- defaultdict的使用场景
- Junit中的Assert常见方法
- linux第三课
- |洛谷|NOIP2014|模拟|P1328 生活大爆炸版石头剪刀布
- GL Studio学习
- 剑指offer_输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- Hadoop WordCount