您的位置:首页 > 编程语言 > Java开发

java 实现四种常用排序

2018-03-10 14:20 246 查看

4种排序算法

    1.冒泡排序

        冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 [1]
public static void bubbling() {
int[] arr2 = {8,13,5,6,11,2,1};
for(int i=0;i<arr2.length;i++) {
for(int j=0;j<arr2.length-1-i;j++) {
if(arr2[j]>arr2[j+1]) {
int temp = arr2[j];
arr2[j]=arr2[j+1];
arr2[j+1]= temp;
}
}
}
System.out.println(Arrays.toString(arr2));

}

    2.二分查找 

二分查找算法也称为折半搜索、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。请注意这种算法是建立在有序数组基础上的。

①找出位于数组中间的值,并存放在一个变量中(为了下面的说明,变量暂时命名为temp);  ②需要找到的key和temp进行比较;  ③如果key值大于temp,则把数组中间位置作为下一次计算的起点;重复① ②。  ④如果key值小于temp,则把数组中间位置作为下一次计算的终点;重复① ② ③。  ⑤如果key值等于temp,则返回数组下标,完成查找。public class work03 {
public static void main(String[] args) {
int[] nums= {5,9,1,4,23,7};
int i = binSearch(nums,1);
System.out.println(i);
}
public static int binSearch(int srcArray[], int key) {   
        int mid = srcArray.length / 2;   
        if (key == srcArray[mid]) {   
            return mid;   
        }   

        int start = 0;   
        int end = srcArray.length - 1;   
        while (start <= end) {   
            mid = (end - start) / 2 + start;   
            if (key < srcArray[mid]) {   
               end = mid - 1;   
            } else if (key > srcArray[mid]) {   
                start = mid + 1;   
            } else {   
                return mid;   
            }   
        }   
        return -1;   
    } 
}

    3.快速排序

//快速

  public static void fast(int [] arr2,int start,int end) {
int[] arr2 = {8,13,5,6,11,2,1};

  sort(arr2,start,end);
  System.out.println("快速排序"+Arrays.toString(arr2));
  }
 
 
  public static void sort(int a[],int start,int end) {
  int i,j,index;
  if(start>end) {
  return;
  }
  i=start;
  j=end;
  index=a[i]; // 基准值
  //从表中间往两边扫描
  while(i<j) {
  while(i<j && a[j]>=index) {
  j--;
  }
  if(i
a589
<j) {
  a[i]=a[j]; // 用比基准小的记录替换低位记录
  i++;
  }
 
  while(i<j && a[i]<index) {
  i++;
  }
  if(i<j) {
  a[j]=a[i];// 用比基准小的记录替换低位记录
  j--;
  }
  System.out.println(Arrays.toString(a));
  }
  System.out.println("i"+i);
  a[i]=index;//基准值替换回a[i]
  sort(a, start, i - 1); // 对低子表进行递归排序
        sort(a, i + 1, end); // 对高子表进行递归排序
  }



    4.选择排序

//选择排序int[] arr2 = {8,13,5,6,11,2,1};
  public static void xuanze(int[] arr2) {
  for(int i=0;i<arr2.length-1;i++) {
int k = i;
for(int j=k+1;j<arr2.length;j++) {
if(arr2[k]>arr2[j]) {
k=j;
}
}
if(i!=k) {
int temp = arr2[i];
arr2[i]=arr2[k];
arr2[k]=temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: