设为首页 收藏本站
查看: 945|回复: 0

[经验分享] java 排序--由二分法查找演变快速排序法

[复制链接]

尚未签到

发表于 2017-7-3 18:26:17 | 显示全部楼层 |阅读模式
  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+" ");
}
}
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<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;
a=a[j];
a[j]=temp;
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390638-1-1.html 上篇帖子: RabbitMQ~一些术语和最消息的生产 下篇帖子: 指针例题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表