Java實現字串數組和字串排序__Java

來源:互聯網
上載者:User

在Java環境下,對字串數組或者對字串排序都是一件很容易的事情,只要調用java.util包下的Arrays類的sort方法即可對其排序。

有沒有想過,我們自己也可以利用排序演算法編寫一個屬於自己的字串數組和字串排序,我就是這麼做的,我利用了快速排序的思想:

* 一趟快速排序是:
 *1,隨機產生一數列,選取第一個數(這裡也可選其他的數)作為比較的基石,假設這個數為X,這樣X=A[0];設兩個變數i=0,j=n-1;n是這個數列的長度
 *2,從前面開始找,找到第一個比A[0]大的數,找到了就與X交換
 *3,從後面開始找,找到第一個比A[0]小的數,找到了就與X交換
 *4,重複步驟2,3,直到i=j;
 *這樣一趟快速排序就完成了;第一趟完成之後,X左邊的數就全部小於X了,X右邊的數九全部大於X,然後採用遞迴方式對X左邊的數和X右邊的數進行快速排序。 


字串數排序代碼如下:

package com.org.tool;/**  * 字串數組排序,利用快排的思想 * @author xiaobangsky * time:2014-10-13 * */public class P4_8 {public static void quickSort(String[] pData,int left,int right)       {         int i,j;         String first,temp;         i = left;         j = right;         first = pData[left]; //這裡選其他的數也行,不過一般選第一個        //一趟快速排序         while(true)         {         //從第二個數開始找大於中樞的數 ,從前面開始找大於pData[left]的數            while((++i)<right-1 && pData[i].compareTo(first)<0);             //從最後一個數開始找第一個小於中樞pData[left]的數             while((--j)>left && pData[j].compareTo(first)>0);             if(i>=j)                 break;             //交換兩邊找到的數             temp = pData[i];             pData[i] = pData[j];             pData[j] = temp;            }         //交換中樞         pData[left] = pData[j];         pData[j] = first;         //遞迴快排中樞左邊的資料         if(left<j)           quickSort(pData,left,j);         //遞迴快排中樞右邊的資料         if(right>i)           quickSort(pData,i,right);       }   public static void main(String[] args) {String[] arr = new String[]{"one","onad","Dream","Beijing","Olympic"};quickSort(arr, 0, 5);for(String s:arr){System.out.print(s+" ");}}}
字串排序代碼如下:
package com.org.tool;/** * 字元排序,快排思想 * @author xiaobangsky * time:2014-10-13 */public class P4_9 {public static void quickSort(char[] pData,int left,int right)       {         int first,i,j;         char temp;         i = left;         j = right;         first = pData[left]; //這裡選其他的數也行,不過一般選第一個        //一趟快速排序         while(true)         {         //從第二個數開始找大於中樞的數 ,從前面開始找大於pData[left]的數            while((++i)<right-1 && pData[i] < first);             //從最後一個數開始找第一個小於中樞pData[left]的數             while((--j)>left && pData[j]>first);             if(i>=j)                 break;             //交換兩邊找到的數             temp = pData[i];             pData[i] = pData[j];             pData[j] = temp;            }         //交換中樞         pData[left] = pData[j];         pData[j] = (char) first;         //遞迴快排中樞左邊的資料         if(left<j)           quickSort(pData,left,j);         //遞迴快排中樞右邊的資料         if(right>i)           quickSort(pData,i,right);       }   public static void main(String[] args) {char[] arr = "xarvfwegfe".toCharArray();quickSort(arr, 0, 10);for(char s:arr){System.out.print(s);}}}
這樣就完成了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.