[java]插入排序及折半插入排序
来源:互联网 发布:分区表丢失数据恢复 编辑:程序博客网 时间:2024/06/05 21:02
package sort_book_datastruction;import java.util.Arrays;/** * 插入排序:主要是将待排序的元素插入到已经排好序的列表中,从而编程长度加1的有序表; * 具体步骤:例如第i个元素是待排序的元素,则前i-1个元素是已经非递减排列的序列,将第i个元素插入到前面已经排好的序列中, * 该元素从第i-1个元素进行比较,如果大于第i-1个元素,则直接插入; * 如果小于,则第i-1的元素向后移一位,同时比较与第i-2元素的大小,依次向前比较,直到排在了正确的位置。 * 在比较之前,要将可能发生右移的待排序元素建立监视哨。 * @author Administrator */public class InsertSort { public void insertSort(int[] array){ int length = array.length; for(int i = 1;i<length;++i){//i表示循环在哪一趟; if(array[i]<array[i-1]){ int j = i-1; int key = array[i];//key待排序元素 while(j>=0 && array[j]>key){ array[j+1] =array[j]; j--; } array[j+1] = key; } } } /** * 折半插入排序 * @param array */ public void insertSort2(int[] array){ int length = array.length; for(int i =1;i<length;i++){ if(array[i-1]>array[i]){ int key = array[i];//待插入元素 int j = i-1; int low = 0,high = j; while(low<=high){ int m = (high - low)/2+low; if(key<array[m]) high = m-1; else low = m+1; } while(j>=high+1){ array[j+1] = array[j]; j--; } array[j+1]=key; } } } public static void main(String[] args) { // TODO Auto-generated method stub InsertSort is = new InsertSort(); int[] a={8,2,5,3,8,11,6,15,9,45,7,5}; is.insertSort(a); //is.insertSort2(a); System.out.println(Arrays.toString(a)); }}
阅读全文
0 0
- [java]插入排序及折半插入排序
- 折半插入排序 Java
- 折半插入排序 Java
- Java 折半插入排序
- java折半插入排序
- 插入排序--折半插入排序[Java实现]
- 插入排序--折半插入
- 插入排序--折半插入
- 折半插入排序java实现
- java折半插入排序算法
- Java实现折半插入排序
- 排序:折半插入排序
- 排序--折半插入排序
- 排序-折半插入排序
- 【插入排序】折半插入排序
- 插入排序--折半插入排序
- 折半插入排序,插入排序
- Java排序之插入排序[二分、折半插入排序](4)
- 欧几里得算法模板
- 数据结构图之java实现
- NOIP2009Hankson的趣味题
- 正则表达式
- Elasticsearch 插入索引文档 和特殊的字段类型
- [java]插入排序及折半插入排序
- aidl原理解析
- Python 中文编码
- Java -2
- servlet(1)
- 联系人号码显示匹配规则
- 初识指针(初学者)
- 文章标题
- C#操作word,自己的一些整合