zoukankan      html  css  js  c++  java
  • 排序—二分法插入排序

      思路和插入排序一样,可见:http://www.cnblogs.com/PerkinsZhu/p/5664808.html

      不同点: 在寻找插入位置的时候采用二分法定位。二分法怎么定位?……

    运行结果:

      原数组:              21、8、2、18、0、9、27、12、5、24、

    第0次循环排序结果: 8、21、2、18、0、9、27、12、5、24、
    第1次循环排序结果: 2、8、21、18、0、9、27、12、5、24、
    第2次循环排序结果: 2、8、18、21、0、9、27、12、5、24、
    第3次循环排序结果: 0、2、8、18、21、9、27、12、5、24、
    第4次循环排序结果: 0、2、8、9、18、21、27、12、5、24、
    第5次循环排序结果: 0、2、8、9、18、21、27、12、5、24、
    第6次循环排序结果: 0、2、8、9、12、18、21、27、5、24、
    第7次循环排序结果: 0、2、5、8、9、12、18、21、27、24、
    第8次循环排序结果: 0、2、5、8、9、12、18、21、24、27、

    直接看代码吧:

    public void binaryInsertionSort(int[] array) {
            printArray("原数组:", array);
            for (int i = 1; i < array.length; i++) {
                int temp = array[i];
                int right = i - 1;
                int left = 0;
                int mid;
                // 定位
                while (left <= right) {
                    mid = (left + right) / 2;
                    if (array[mid] > temp) {
                        right = mid - 1;
                    } else if (array[mid] < temp) {
                        left = mid + 1;
                    }
                }
                // 移动数组
                for (int j = i; j > left; j--) {
                    array[j] = array[j - 1];
                }
                // 在找到的位置插入
                array[left] = temp;
                printArray("第" + time++ + "次循环排序结果: ", array);
            }
        }
  • 相关阅读:
    CSS发布时间
    1CSS简介
    CSS 样式的优先级(重要,一定要理解)
    css为什么叫层叠样式表
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
  • 原文地址:https://www.cnblogs.com/PerkinsZhu/p/5674572.html
Copyright © 2011-2022 走看看