排序及二分查找
2017-04-01 14:00
232 查看
/** * @className:TwoDivide.java * @classDescription:排序和二分查找 * @author:jiangmianyue * @createTime:2011-6-15 */ public class TwoDivide { /** * 冒泡排序 * * @author jiangmianyue * @createTime 2011-6-15 * @param args */ public static void main(String[] args) { int[] aa = new int[] { 1, 8, 18, 38, 98, 218, 982, 1189 }; // 冒泡排序 System.out.println("排序前"); for (int i = 0; i < aa.length - 1; i++) { System.out.println(aa[i]); } for (int i = 1; i < aa.length; i++) { for (int j = 0; j < aa.length; j++) { if (aa[i] < aa[j]) { aa[i] = aa[i] + aa[j]; aa[j] = aa[i] - aa[j]; aa[i] = aa[i] - aa[j]; } } } System.out.println("排序后"); for (int i = 0; i < aa.length; i++) { System.out.println(aa[i]); } System.out.println("第二种排序"); for(int i = 0; i < aa.length - 1; i++){ for(int j = 0; j < aa.length - i -1; j ++){ if (aa[j] < aa[j + 1]){ aa[j] = aa[j] + aa[j + 1]; aa[j + 1] = aa[j] - aa[j + 1]; aa[j] = aa[j] - aa[j + 1]; } } } for (int i = 0; i < aa.length; i++) { System.out.println(aa[i]); } System.out.println(doOrder(aa, 100)); } /** * 二分查找 * * @author jiangmianyue * @createTime 2011-6-15 * @param aa * 数组 * @param a * 要查找的值 * @return 返回在数据中的位置 */ public static int doOrder(int[] aa, int a) { int low = 0; // 数组的最小值小标 int hight = aa.length - 1; // 数组的最大值下标 // while条件是当low小于等于hight时执行 while (low <= hight) { // 取数组的中间下标 int middle = (hight + low) / 2; if (a < aa[middle]) { // 当要查找的值小于中间值的时候把中间值减1赋值给最大值 hight = middle - 1; } else if (a > aa[middle]) { // 当要查找的值大于中间值的时候把中间值加1赋值给最小值 low = middle + 1; } else { // 最后得出的中间值为要的下标值 return middle; } } return -1; } }
相关文章推荐
- LintCode 106-排序列表转换为二分查找树
- 选择排序、冒泡排序、二分查找
- W. :利用合并排序和二分查找实现习题2.3-7
- php的四种排序与二分查找
- 已排序数组二分查找
- 算法(排序)加 二分查找
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- LeetCode基础-查找-排序数组二分查找
- C语言排序(5)___青蛙过河——(二分查找)
- 汇编器优化,指令名链表排序与二分查找
- java冒泡,选择排序及折半(二分)查找
- 快速排序和二分查找的练习
- 随机生成1024个数,用指针进行排序,并实现二分查找
- #1128 : 二分·二分查找 ( 两种方法 先排序在二分O(nlogN) + 直接二分+快排思想O(2N) )
- 已排序二维数组中的二分查找
- PHP四种排序方式和二分查找。
- 快速排序+二分查找
- 【JavaSE_学习笔记】排序、二分查找与数组工具类
- 编程珠玑第2章:排序、二分查找、签名、向量平移
- java选择排序和二分查找