现在的位置: 首页 > 综合 > 正文

常用排序算法

2013年12月07日 ⁄ 综合 ⁄ 共 2619字 ⁄ 字号 评论关闭

生活中常用的排序算法:冒泡排序、插入排序、快速排序

常用排序算法java实现代码
  1. package com.tao.bao;  
  2.   
  3.   
  4. /**  
  5.  * @author Administrator  
  6.  *  
  7.  */  
  8. public class SortAll {  
  9.   
  10.     /**  
  11.      * @param args  
  12.      * 插入排序  
  13.      */  
  14.     public int[] insertionSort(int[] arr){  
  15.         int j;  
  16.         for(int p=1;p<arr.length;p++){  
  17.             int tmp=arr[p];  
  18.             for(j=p;j>0&&arr[j-1]>tmp;j--)      
  19.             {  
  20.                 arr[j]=arr[j-1];  
  21.             }  
  22.              arr[j]=tmp;  
  23.         }  
  24.         return arr;  
  25.     }  
  26.       
  27.     /**  
  28.      * ,冒泡排序  
  29.      * @param arr  
  30.      * @return  
  31.      */  
  32.     public int[] maoPaoSort(int[] arr){  
  33.         for(int i=0;i<arr.length;i++){  
  34.            for(int j=0;j<arr.length-i-1;j++){  
  35.                if(arr[j]>arr[j+1])  
  36.                {  
  37.                    int tmp = arr[j];  
  38.                    arr[j]=arr[j+1];  
  39.                    arr[j+1]=tmp;  
  40.                }  
  41.            }  
  42.         }  
  43.         return arr;  
  44.     }  
  45.       
  46.     /*  
  47.      * 快速排序  
  48.      */  
  49.     public int partition(int[] arr,int left,int right){  
  50.         int x = arr[right]; //选取最后一个元素为主元,算法导论中算法  
  51.         int i = left-1;  
  52.         for(int j=left;j<right;j++){  
  53.             if(arr[j]<=x){  
  54.                 i=i+1;  
  55.                 swap(arr,i,j);  
  56.             }  
  57.         }  
  58.         swap(arr,i+1, right);  
  59.         return i+1;  
  60.           
  61.     }  
  62.       
  63.     public int[] quicksort(int[] arr,int left,int right){  
  64.         if(left<right){  
  65.             int q = partition(arr, left, right);//关键  
  66.             quicksort(arr, left, q-1);  
  67.             quicksort(arr, q+1, right);  
  68.             return arr;  
  69.         }  
  70.         return null;      
  71.     }  
  72.       
  73.     public static void swap(int arr[],int a,int b){  
  74.         int temp = 0;  
  75.          temp = arr[a];  
  76.          arr[a] =arr[b];  
  77.          arr[b] = temp;  
  78.     }  
  79.       
  80.   
  81.       
  82.     public static void main(String[] args) {  
  83.         SortAll all = new SortAll();  
  84.         int arr[] = {2,8,7,1,3,5,6,4};  
  85.         int newarr1[] = all.insertionSort(arr);  
  86.         System.out.println("insertionSort方法");  
  87.         for(int i=0;i<newarr1.length;i++){  
  88.             System.out.print(newarr1[i]+" ");  
  89.         }  
  90.         System.out.println();  
  91.         int newarr[] = all.maoPaoSort(arr);  
  92.         System.out.println("maoPaoSort方法");  
  93.         for(int i=0;i<newarr.length;i++){  
  94.             System.out.print(newarr[i]+" ");  
  95.         }  
  96.         System.out.println();  
  97.           
  98.         int arrquick[] = all.quicksort(arr, 0, arr.length-1);  
  99.         System.out.println("arrquick方法");  
  100.         for(int i=0;i<arrquick.length;i++){  
  101.             System.out.print(arrquick[i]+" ");  
  102.         }  
  103.         System.out.println();  
  104.     }  
  105.   

抱歉!评论已关闭.