希尔排序
来源:互联网 发布:中国人工智能公司排名 编辑:程序博客网 时间:2024/05/18 13:45
思想:
取一定的间隔作为增量,并逐渐增大增量使其合并逐渐构成相对有序的序列,直到完全有序
实现思路
使用三重for循环,最外层控制增量,里面两层为插入排序
实现代码
package sort;import java.util.Random;public class ShellSort { /** * 希尔排序:取一定的间隔作为增量,并逐渐增大增量使其合并逐渐构成相对有序的序列,直到完全有序 * 千万随机数耗时3978毫秒 * @param arr */ public static void shellSort(int[] arr) { int j = 0; int temp = 0; /* * 取二分增量法, */ for ( int increment = arr.length/2; increment > 0; increment /= 2 ) { /* * 不取每个小序列的第一个数,取后面的数与小序列的前面的数比较, */ for ( int i = increment; i < arr.length; i++ ) { temp = arr[i]; for ( j = i - increment; j >= 0; j -= increment ) { if (temp < arr[j]) { /* * temp与arr[j+increment]不同 * temp在循环中固定不变了 * 使用temp会丢失数据 */ arr[j+increment] = arr[j]; } else { break; } } arr[j + increment] = temp; } } } public static void main(String[] args) {// int[] arr = { 8, 5, 6, 7, 2, 3 }; int[] arr = new int[10000000]; for(int i = 0; i < arr.length; i++){ arr[i] = new Random().nextInt(1000000000); } System.out.println(1); long startTime=System.currentTimeMillis(); ShellSort.shellSort(arr); long endTime=System.currentTimeMillis(); System.out.println(endTime-startTime);// for ( int i : arr ) {// System.out.println(i);// } }}
阅读全文
0 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- SSM整合最新版,spring4.2,springmvc4.2,mybatis3.2整合
- css全总结之布局
- Switch game
- activeMQ安全配置及常见问题解决
- table表格嵌套,边框重叠变粗的解决
- 希尔排序
- WinSCP乱码解决
- [洛谷P2055]假期的宿舍
- 悲剧的特征与功能:《哈姆雷特》
- Android开发中的MVP模式
- 草稿
- 2
- volley 获取数据
- cad .net 2010 DeleteUnmanagedObject 错误