Java排序算法

package com.java.test;

import java.util.Arrays;

public class ArraySort{
 
 
 static int array[] = {34,87,45,15,68,37,85,69,92};
 public static void main(String args[]){  
  
  System.out.println("快速排序:\n"+arrayValue(quickSort(array)));
  System.out.println("冒泡排序:\n"+arrayValue(bubbleSort(array)));
  System.out.println("选择排序:\n"+arrayValue(selectSort(array)));
  System.out.println("插入排序:\n"+arrayValue(insertSort(array)));
 }
 public static String arrayValue(int[] array){
  String str = new String();
  if(array!=null){
   for(int i=0;i<array.length;i++){
    str += "array["+i+"]:"+array[i]+"\n"; 
   }
  }  
  return str;  
 }
 /**
  * 快速排序  利用Arrays.sort()方法直接排序
  * @param array
  * @return
  */
 public static int[] quickSort(int[] array){
  Arrays.sort(array);
  return array;  
 }
 /**
  * 冒泡排序,第一个与后面的每个值进行比较,最后第一个数值为最小
  * 依此而行,第二个与其他值比较,直到倒数第二个与最后一个值比较
  * @param array
  * @return
  */
 public static int[] bubbleSort(int[] array){
        for(int i=0;i<array.length-1;i++){
           for(int j=i+1;j<array.length;j++){            
                if (array[i]>array[j]){
                    int temp=array[i];
                    array[i]=array[j];
                    array[j]=temp;
                }
           }
        }
        return array;
 }
 /**
  * 选择排序,看起来有点像冒泡排序,但是逻辑不通
  * 第一次是把所有的数值进行比较对ayyay[0]进行赋值,即是把第一个值与最小的值进行交换
  * 依此而行,第n次是把第n-1个值与其余的最小值进行交换
  * @param array
  * @return
  */
 public static int[] selectSort(int[] array){
        for (int i=0;i<array.length-1 ;i++ ){
                int min=i;
                for (int j=i+1;j<array.length ;j++ ){
                     if (array[min]>array[j]){
                        min=j;
                     }
                }
                if (min!=i){
                 int temp=array[i];
                 array[i]=array[min];
                 array[min]=temp;        
                }
        }
        return array;
 }
 /**
  * j插入排序,第一次对前两个进行排序,n次对前n+1个进行排序
  * @param array
  * @return
  */
 public static int[] insertSort(int[] array){
        for(int i=1;i<array.length;i++){
           for(int j=i;j>0;j--){
                if (array[j]<array[j-1]){
                      int temp=array[j-1];
                      array[j-1]=array[j];
                      array[j]=temp;        
                }
                else break;
           }
        }
        return array;
 }
}

点赞