Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序

来源:互联网 发布:c语言接口 结构体 编辑:程序博客网 时间:2024/05/14 08:36


1.冒泡排序:public class BubbleSort { public  static  void  main  (String  [] args ){    int values []={2,4,6,8,10};  sort(values);  for (int i=0;i<values.length;i++){   System.out.println("index:"+i+"   "+"value:"+values[i]);  }     } private static void sort(int[] values) {  // TODO Auto-generated method stub   int temp;  for(int i=0;i<values.length;i++){   for(int j=0;j<values.length-i-1;j++){    temp=values[j];    values[j]=values[j+1];    values[j+1]=temp;   }  }   } }2.插入排序/** * 插入排序 * @author Administrator * */public class InsertSort{public static int [] values=new int []{3,2,5,6,8,7,1,4,9,10};public static void main(String[] args) {  //从数组第二个元素开始排序,因为第一个元素本身肯定是已经排好序的        for(int i=0;i<values.length;i++){  // 复杂度 n         int key=values[i];int j=i-1; //依次跟之前的元素进行比较,如果发现比前面的原素小,则交换位置,最终完成排序。while(j>=0  && values[j]>key){values[j+1]=values[j];values[j]=key;j--;}} /*           *  所以最终复杂度为n*n=n^2。   *  最优情况下(即都已经排列好的情况下),第二个n=1, 所以在最优情况下,复杂度为n。        *    */        // 打印数组printArray();}private static void printArray() {for (int i : values){System.out.print(i+ " ");}}} 3.快速排序public class QuickSort {     //待排数组   private static int[] input = new int[] { 2, 1, 5, 4, 9, 8, 6, 7, 10, 3 };     public static void main(String[] args) {           //快速排序         quickSort(input, 0, input.length - 1);       //打印数组        printArray();     }private static void quickSort(int[] array, int from, int to) {      if (from < to) {            int temp = array[to];             int i = from - 1;             for (int j = from; j < to; j++) {              if (array[j] <= temp) {                      i++;                        int tempValue = array[j];                     array[j] = array[i];                      array[i] = tempValue;                   }              }             array[to] = array[i+1];            array[i+1] = temp;             quickSort(array, from, i);             quickSort(array, i + 1, to);      }     }      private static void printArray() {       for (int i : input) {           System.out.print(i + " ");      }    } } 4.选择排序public class SelectionSort {   private static int[] input = new int[] { 2, 1, 5, 4, 9, 8, 6, 7, 10, 3 };      public static void main(String[] args) {        for (int i=0; i<input.length-1; i++) {   //复杂度:n            int key = input[i];             int index = i;            //比较当前值和下一个值的关系,记录下较小值的值和索引数,用于交换。           for (int j=i+1; j<input.length; j++) {    //复杂度:1+2+...+(n-1)=Θ(n^2)               key = key < input[j] ? key : input[j];              index = key < input[j] ? index : j;              }              input[index] = input[i];            input[i] = key;           }          /*            * 复杂度分析:        * 最坏情况下,复杂度为:n*n=n^2(若略微精确的计算即为:n-1+1+2+...+n-1=(2+n)*(n-1)/2,          * 所以复杂度仍为n^2。           * 最优情况下,由于不论原数组是否排序好,均需要全部遍历以确定当前的最小值,所以复杂度不变仍未n^2。             */         //打印数组         printArray();      }       private static void printArray() {     for (int i : input) {           System.out.print(i + " ");        }      }    }  5、交换排序import java.util.Arrays;public class Swapsort {public static void main(String[] args) {int [] values=new int[]{(int) (Math.random()*100),(int) (Math.random()*100),(int) (Math.random()*100),(int) (Math.random()*100),};System.out.println(Arrays.toString(values));swap(values);System.out.println(Arrays.toString(values));}private static void swap(int[] values) {// TODO Auto-generated method stubint temp;int len=values.length;for(int i=0;i<len/2;i++){temp=values[i];   values[i]=values[len-i-1];   values[len-i-1]=temp;}}} 


原创粉丝点击