江湖开发者 | Java粉
网站地图
首页> Java优化> Java常见排序算法
2015
12-12

Java常见排序算法

 

冒泡排序

* 相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后

public static void bubbleSort(int[] array){

     for(int i=0;i<array.length-1;i++){

        boolean flag = false;

        for(int j =0;j<array.length-1-i;j++){

          if(array[j]>array[j+1]){

             int temp = array[j+1];

             array[j+1] = array[j];

             array[j] = temp;

             flag =true;

          }

        }

     System.out.println(Arrays.toString(array));

        if(!flag){

          break

        }

     }

}

折半插入排序

 * 折半插入排序是对直接插入排序的简单改进。

public static void binaryInsertSort(int[] array){

     for(int i=1;i<array.length;i++){

        int temp = array[i];

        int low = 0;

        int high = i-1;     

        while(low<=high){

          int mid = (low+high)/2;

          if(temp >array[mid]){

             low = mid+1;

          }else{

             high = mid-1;

          }

        }

        System.out.println(low);

        for(int j=i;j>low;j--){

          array[j] = array[j-1];

        }

        array[low]  = temp;

     }

}

直接插入排序

每次将一个待排序的元素,按其关键字的大小插入到前面已经排好序的子文件的适当位置,直到全部记录插入完成为止。

public static void insrtSort(int[] array){

     for(int i=1;i<array.length;i++){

        int temp = array[i];            

        if(array[i]<array[i-1]){   

          int j =i-1;

          for(;j>=0 && array[j]>temp;j--){

             array[j+1] = array[j];

          }

          array[j+1] = temp; 

        }

        System.out.println(Arrays.toString(array));

     }

}

快速排序

快速排序(Quick Sorting) 是迄今为止所有内排序算法中速度最快的一种

public static void quickSort(int[] array,int start,int end){

        if(start<end){

          int base = array[start];

          int i = start;

          int j = end + 1;

          while(true){

             while(i<end && array[++i]<=base);

             while(j>start && array[--j] >=base);  //

             if(i<j){

               swap(array,i,j);

             }else{

               break;

             }

          }

          swap(array,start,j);

          quickSort(array,start,j-1);

          quickSort(array,j+1,end);

        }

}

private static void swap(int[] array,int i,int j){

        int temp = array[i];

        array[i] = array[j];

        array[j] = temp;

 }

选择排序

在一组元素 R[i] R[n] 中选择具有最小关键码的元素若它不是这组元素中的第一个元素,则将它与这组元素中的元素对调。

public static void selectSort(int[] array){

     for(int i =0;i<array.length-1;i++){

        int minIndex =i;

        for(int j=i+1;j<array.length;j++){

          if(array[minIndex]>array[j]){

             minIndex=j;

          }

        }

        if(minIndex!=i){

          int temp = array[i];

          array[i] = array[minIndex];

          array[minIndex] = temp;

        }

     }

}

Java江湖     
全部评论:

表情验证码,看不清楚,换一张

随机文章

云标签

公众号

微信

分享:分享我们的知识;专注:专注个人技术的提升;