zoukankan      html  css  js  c++  java
  • 基本排序算法的实现

      1 package com.dongbin.sort;
      2 
      3 import java.util.Arrays;
      4 
      5 /**
      6  * 排序
      7  * @author dongbin
      8  *
      9  */
     10 public class AllSort {
     11     
     12     public static void main(String[] args) {
     13         int[] arr = {1,32,43,11,23,45};
     14         MergeSort(arr);
     15         System.out.println(Arrays.toString(arr));
     16     }
     17 
     18     /**
     19      * 冒泡排序
     20      * @param arr
     21      * @return
     22      */
     23     public static int[] BubbleSort(int[] arr){
     24         
     25         for(int i=0;i<arr.length-1;i++){
     26             for(int j=i+1;j<arr.length;j++){
     27                 if(arr[i]>arr[j]){
     28                     int temp = arr[i];
     29                     arr[i] = arr[j];
     30                     arr[j] = temp;
     31                 }
     32             }
     33         }
     34         return arr;
     35     }
     36     
     37     /**
     38      * 选择排序
     39      * @param arr
     40      * @return
     41      */
     42     public static int[] SelectionSort(int[] arr){
     43         
     44         int min;
     45         for(int i=0;i<arr.length-1;i++){
     46             min=i;
     47             for(int j=i+1;j<arr.length;j++){
     48                 if(arr[i]>arr[j]){
     49                     min = j;
     50                 }
     51             }
     52             
     53             if(min!=i){
     54                 int temp = arr[i];
     55                 arr[i] = arr[min];
     56                 arr[min] = temp;
     57             }
     58         }
     59         return arr;
     60     }
     61     
     62     /**
     63      * 插入排序
     64      * @param arr
     65      * @return
     66      */
     67     public static int[] InsertSort(int[] arr){
     68         
     69         for(int i=1;i<arr.length;i++){
     70             int current = arr[i];
     71             int pos = i;
     72             for(int j=i-1;j>=0;j--){
     73                 if(arr[j]>current){
     74                     arr[j+1] = arr[j];
     75                     pos = j;
     76                 }
     77             }
     78             arr[pos]=current;
     79         }
     80         return arr;
     81     }
     82     
     83     /**
     84      * 快速排序
     85      * @param arr
     86      * @return
     87      */
     88     public static int[] QuickSort(int[] arr){
     89         if(arr.length<=1){
     90             System.out.println("传入的数组长度小于或等于1");
     91         }else{
     92             _quickSort(arr, 0, arr.length-1);
     93         }
     94         
     95         return arr;
     96     }
     97     
     98     public static void _quickSort(int[] arr ,int start, int end){
     99         if(start>=end){
    100             return;
    101         }
    102         
    103         int i = start,j=end,current = arr[j];
    104         boolean flag = false;
    105         
    106         while(i!=j){
    107             if(flag){
    108                 if(arr[j]<current){
    109                     int temp = arr[j];
    110                     arr[j] = arr[i];
    111                     arr[i] = temp;
    112                     flag = false;
    113                 }else j--;
    114             }else{
    115                 if(arr[i]>current){
    116                     int temp = arr[j];
    117                     arr[j] = arr[i];
    118                     arr[i] = temp;
    119                     flag = true;
    120                 }else i++;
    121             }
    122         }
    123         
    124         _quickSort(arr, start, i-1);//左边
    125         _quickSort(arr, j+1, end);//右边
    126     } 
    127     
    128     
    129     /**
    130      * 归并排序
    131      * @param arr
    132      * @return
    133      */
    134     public static int[] MergeSort(int[] arr){
    135         _mergeSort(arr, 0, arr.length-1);
    136         return arr;
    137     }
    138     
    139     public static void _mergeSort(int[] arr,int left,int right){
    140 
    141         if (left < right) {
    142             int mid = (left + right) / 2;
    143             // 划分
    144             _mergeSort(arr, left, mid);
    145             _mergeSort(arr, mid + 1, right);
    146 
    147             // 合并
    148             _merge(arr, left, mid, right);
    149         }
    150 
    151     }
    152     public static void _merge(int[] arr,int left,int mid,int right){
    153         
    154         int[] newArr = new  int[arr.length];//新数组
    155         int center = mid+1;
    156         int tmp = left;
    157         int pos = left;
    158         
    159         while(left<=mid&&center<=right){
    160             if(arr[left]<=arr[center]){
    161                 newArr[pos++]=arr[left++];
    162             }else{                
    163                 newArr[pos++]=arr[center++];
    164             }
    165         }
    166         
    167         while(left<=mid){
    168             newArr[pos++]=arr[left++];
    169         }
    170         
    171         while(center<=right){
    172             newArr[pos++]=arr[center++];
    173         }
    174         
    175         while(tmp<=right){
    176             arr[tmp] = newArr[tmp++];
    177         }
    178         
    179         
    180         
    181     }
    182 }
  • 相关阅读:
    解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题
    解决:“MediaPlayer error (1, -2147483648)”问题
    EasyUI 验证
    ANT简明教程[转载]
    [转]Android开源框架ImageLoader的完美例子
    [转]Android精品开源项目整理
    【转】25个非常实用的jQuery/CSS3应用组件
    [转]8款实用的jQuery/CSS3最新插件应用
    解决IE6下浮层遮盖select刺穿的问题
    jQuery AJAX中文乱码处理
  • 原文地址:https://www.cnblogs.com/b-dong/p/5907831.html
Copyright © 2011-2022 走看看