zoukankan      html  css  js  c++  java
  • java 排序--由二分法查找演变快速排序法

    java 排序: 只要上网搜索。基本是铺天盖地的资源。

    但是,我个人觉得很多人的资源,不如我们自己理解的简单。

    特别是越厉害的哥们,写起代码就越复杂,

    而我们有时需要的是能理解的技术,而不是复杂的技术大眼瞪小眼。

    package cc.cm.util;

    import java.lang.reflect.Array;
    import java.util.ArrayList;

    public class Arraytest{

    /**二分法查找 必须是一组有序的数组
    * @param args
    */
    public static void main(String[] args) {
    int a[]={1,3,5,7,10};
    int index=BinartSearch(a, 5);
    System.out.println("5元素在:"+index +"位");
    int b[]={12,23,5,27,10,15,82,45,44};
    QuickSork(b,0,8);
    for (int i = 0; i < b.length; i++) {
    System.out.print(b[i]+" ");
    }
    }
    public static int BinartSearch(int array[],int T){
    int low,high,mid;
    low=0;
    high=array.length-1;
    while(low<=high){
    mid=(low+high)/2;
    if(array[mid]<T){
    low=mid+1;
    }
    if(array[mid]>T){
    high=mid-1;
    }
    else
    {
    return mid;
    }

    }

    return -1;
    }
    /**
    * 快速排序法
    * @param array数组的
    * @param left最左边的位置
    * @param right最右边的位置
    基本思想是:
    从数组中取出一个元素作为基准值
    把其他元素分为两组:
    “小的”是那些小于基准值的元素。
    “大的”是那些大于基准值的元素,
    递归对这两个组做排序。
    快速排序快速的原因在于:一旦知道了某个元素比基准值小,它就不需要在与那些大的元素比较。
    而大的元素也不需要在与小的元素比较,这个性质使快速排序比简单排序、冒泡排序快的多。
    时间复杂度:O(nlogn)
    */
    public static void QuickSork(int[] array,int left,int right){
    if(array.length<=0){
    return ;
    }
    if(left>=right){
    return ;
    }
    int last;
    last=left;//作为一个比基准值得下标
    //循环遍历找出这个数组小于比基准值小的元素的个数。进行统计
    for (int i = left+1; i <= right; i++) {
    if(array[i]<array[left]){
    Exchange(array,++last,i);
    }
    }
    Exchange(array, left, last);
    QuickSork(array,left,last-1);
    QuickSork(array,last+1,right);

    }
    /**
    * 交换数组的两个元素
    * @param a
    * @param i
    * @param j
    */
    public static void Exchange(int[] a,int i,int j){
    int temp;
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
    }

    北上广深是个高节奏的生活,作为一个新人,很多时候我们都在感叹职位上老人的智慧。以前通过搜索引擎,80%的问题都有答案。那么现在我是觉得90%都会有答案。那么作为我们新人的的核心竞争力到底在哪里?
  • 相关阅读:
    OCP-1Z0-051-V9.02-55题
    OCP-1Z0-051-V9.02-60题
    OCP-1Z0-053-V12.02-59题
    OCP-1Z0-053-V12.02-184题
    OCP-1Z0-053-V12.02-595题
    OCP-1Z0-053-V12.02-584题
    OCP-1Z0-053-V12.02-234题
    OCP-1Z0-053-V12.02-548题
    OCP-1Z0-053-V12.02-549题
    OCP-1Z0-053-V12.02-551题
  • 原文地址:https://www.cnblogs.com/harry-Consonance/p/6594787.html
Copyright © 2011-2022 走看看