小白笔记---------------------自然合并排序算法(感谢bob的指导)
来源:互联网 发布:微信怎么分享淘宝店铺 编辑:程序博客网 时间:2024/09/21 08:59
import java.awt.List;import java.util.LinkedList;import java.util.Scanner;public class Naturesort {public static void main(String[] args) {int[] a = read();print(a);int[] b = getCount(a);sort(a,b);print(a);}public static int[] read(){LinkedList<Integer> arr = new LinkedList<Integer>();Scanner s = new Scanner(System.in);int num;while((num = s.nextInt()) != 0){ arr.add(num); }Integer[] n = arr.toArray(new Integer[0]);int[] a = new int[n.length];for(int i=0; i < n.length; i ++){a[i] = n[i].intValue();}return a;}public static void print(int[] n){for(int i =0; i < n.length ; i++){System.out.print(n[i]+" ");}System.out.println();}public static int[] getCount(int[] n){int i = 0,j = -1,count = 0;int[] b = new int[n.length+1];//b数组用来记录分成数组的大小,下表标值+1用来表示数组的个数while(i < (n.length -1)){if(n[i] <= n[i+1]){i++;}else{b[count] = i - j;count++;j = i;i++;}}b[count++] = n.length - j - 1;if(count == 1){System.out.println("排序结束!");print(n);System.exit(0);}print(b);return b;}public static void sort(int[] n,int[] b){int k = 0 ,count = 0;int j =0,p = 0, q = 0;int indexC = 0, indexD = 0;while(b[k++] != 0){count++;}for(int i = count/2;i >= 1;i--){int[] c = new int[b[j]];int[] d = new int[b[j+1]];indexC = 0;indexD = 0;//注意下标置零,哼重要!for(;indexC < c.length ;indexC++){c[indexC] = n[p++];}for(;indexD < d.length ;indexD++){d[indexD] = n[p++];}indexC = 0;indexD = 0;//注意下标置零,很重要!!while(indexC < c.length && indexD < d.length){if(c[indexC] <= d[indexD]){n[q++] = c[indexC++];}else{n[q++] = d[indexD++];}}if(indexC < c.length){for(;indexC < c.length ; indexC++){n[q++] = c[indexC];}}else if(indexD < d.length){for(;indexD < d.length;indexD++){n[q++] = d[indexD];}}j = j+ 2; }print(n);b = getCount(n);sort(n,b);}}
0 0
- 小白笔记---------------------自然合并排序算法(感谢bob的指导)
- 自然合并排序算法
- 算法-自然合并排序
- 【算法设计】合并排序、自然合并排序与快速排序算法的Java实现
- 合并自然排序
- 自然合并排序
- 算法7.自然合并排序与最长公共子序列。
- 改进的合并排序算法(小数组内使用插入排序算法)
- 自然排序算法介绍
- 自然合并排序的java实现(合并排序的非递归实现)
- 分治法---归并排序,改进的归并排序,自然合并排序
- 算法导论学习笔记(二):合并排序
- 合并排序的递归算法
- 自然数组的排序
- 排序算法的数组实现 -- 合并排序(三)
- Erlang的算法-(二)合并排序/归并排序
- 求职面试算法总结(感谢用心整理的小伙伴)
- 算法导论笔记之----合并排序
- Andorid-Tint使用与原理解析
- 第一课trie 树 POJ 2001
- https环境
- 机器学习-KNN分类算法Iris实例
- 在Dell XPS 13安装WIN10和ubuntu双系统
- 小白笔记---------------------自然合并排序算法(感谢bob的指导)
- 能咋地
- spring学习笔记(19)mysql读写分离后端AOP控制实例
- 多线程
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter7-21
- Qtablewiget 清空表格内容;
- Python-pip 安装失败问题解决
- unity移植到Xcode ld: library not found for -liPhone-lib
- 圆角图标的显示优化