二分排序
来源:互联网 发布:杀破狼 js主唱去世 编辑:程序博客网 时间:2024/06/06 07:16
import java.util.ArrayList;
import java.util.Scanner;
public class BinSork {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
String str = cin.next();
while (!str.equals("end")) {
list.add(Integer.parseInt(str));
str = cin.next();
}
Object[] objects = list.toArray();
Integer[] nums = new Integer[objects.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = (Integer) objects[i];
}
binSort(nums, 0, nums.length - 1);
for (int i = 0; i < nums.length; i++)
System.out.print(" " + nums[i]);
}
public static void binSort(Integer[] nums, int start, int end) {
if (end > start) {
int mid = (start + end) / 2;
binSort(nums, start, mid);
binSort(nums, mid + 1, end);
mearge(nums, start, end);
}
}
public static void mearge(Integer[] nums, int start, int end) {
Integer[] temp = new Integer[end - start + 1];
int mid = (start + end) / 2;
int i = start, j = mid + 1;
int index = 0;
while (i <= mid && j <= end) {
if (nums[i].intValue() - nums[j].intValue() <= 0)
temp[index] = nums[i++];
else
temp[index] = nums[j++];
index++;
}
while (i <= mid)
temp[index++] = nums[i++];
while (j <= end)
temp[index++] = nums[j++];
for (int k = 0; k <= end - start; k++)
nums[k + start] = temp[k];
}
}
- 二分排序
- 二分排序
- 二分排序
- 二分排序
- 二分排序
- 排序+二分
- 二分排序
- 二分排序
- 二分排序
- 排序之二分排序
- 二分排序与二分查找
- 二分排序与二分查找
- 二分排序与二分查找
- 二分查找和二分排序
- 二分排序:直接插入排序+二分搜索
- 二分查找+二分排序(快速排序)
- 排序之二分插入排序
- 排序之二分插入排序
- 破解网页右键被锁小技巧
- About interface and inner class
- 域名相关知识
- 最近的一些进展
- 关于SQL2005安装失败的一种可行性解决办法
- 二分排序
- 读马加爵绝信后感
- IE和火狐的不兼容
- 快速排序
- 中国象棋(一)
- 2010.03.12网龙笔试小记
- FlexViewer+Tomcat6.0本地化配置
- 安全沙箱冲突
- 护嗓10技巧