隨筆-200  評論-148  文章-15  trackbacks-0

          JAVA四種基本排序,包括冒泡法,插入法,選擇法,SHELL排序法.其中選擇法是冒泡法的改進(jìn),SHELL排序法是 插入法的改進(jìn).所以從根本上來說可以歸納為兩種不同的排序方法:即:插入法&冒泡法

          一 插入法:

          遍歷排序集合,每到一個元素時,都要將這個元素與所有它之前的元素遍歷比較一遍,讓 符合排序順序的元素挨個移動到當(dāng)前范圍內(nèi)它最應(yīng)該出現(xiàn)的位置。交換是相鄰遍歷移動,雙重循環(huán)控制實(shí)現(xiàn).這種排序法屬于地頭蛇類型,在我的地牌上我要把所有 的東西按一定的順序規(guī)整,過來一個,規(guī)整一個.

          處理代碼如下:

          														public void sort(int[] data) {
          int temp;
          for(int i=1; i〈data.length; i++){
          for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){

          temp=date[j];
          data[j]=data[j-1];
          data[j-1]=temp; }
          }
          }

          二冒泡法:

          比較容易,它的內(nèi)層循環(huán)保證遍歷一次后,集合中最小(大)元素出現(xiàn)在它的正確位置, 下一次就是次小元素。。。該方法在集合分布的各種情況下交換移動的次數(shù)基本不變,屬于最慢的一種排序。實(shí)現(xiàn)也是雙重循環(huán)控制。這種排序法屬于過江龍,就是 要找到極端,但是過獎龍也有大哥,二哥等,所以他們只能是大哥挑了二哥挑.

          處理代碼如下:

          														public static int [] maopao(int[] data) {
          int temp;
          for(int i=0; i〈data.length-1; i++){
          for(int j=i+1; j〈data.length; j++){
          if(data[i]〈data[j]){
          temp=data[i];
          data[i]=data[j];
          data[j]=temp;
          }
          }
          }

          return data;

          三選擇法:

          該方法只是通過遍歷集合記錄最小(大)元素的位置,一次遍歷完后,再進(jìn)行交換位置操 作,類似冒泡,但在比較過程中,不進(jìn)行交換操作,只記錄元素位置。一次遍歷只進(jìn)行一次交換操作。這個對與交換次序比較費(fèi)時的元素比較適合。這種排序法比冒 泡法要城府要深的多,我先記住極端數(shù)據(jù),待遍歷數(shù)據(jù)完了之后,我再處理,不像冒泡法那樣只要比自己極端一點(diǎn)的就要處理,選擇法只處理本身范圍內(nèi)的最極端數(shù) 據(jù).

          														public static void xuanze(int[] data) {
          int temp;
          for (int i = 0; i 〈 data.length; i++) {
          int lowIndex = i;
          for (int j = data.length - 1; j 〉 i; j--) {
          if (data[j] 〉 data[lowIndex]) {
          lowIndex = j;
          }
          }
          temp=data[i];
          data[i]=data[lowIndex];
          data[lowIndex]=temp;
          }
          }

          四 Shell排序:

          它是對插入排序的一種改進(jìn),是考慮將集合元素按照一定的基數(shù)劃分成組去排序,讓每一組在局部范圍內(nèi)先排成基本有序,最后在進(jìn)行一次所有元素的插入排序。

          				public void sort(int[] data) {
          for(int i=data.length/2; i〉2; i/=2){
          for(int j=0; j〈i; j++){
          insertSort(data,j,i);
          }
          }
          insertSort(data,0,1);
          }

          private void insertSort(int[] data, int start, int inc) {
          int temp;
          for(int i=start+inc; i〈data.length; i+=inc){
          for(int j=i; (j〉=inc)&&(data[j]〈data[j-inc]); j-=inc){
          temp=data[j];
          data[j]=data[j-inc]
          data[j-inc]=temp;
          }
          }
          }
          posted on 2007-10-31 09:27 無聲 閱讀(591) 評論(1)  編輯  收藏 所屬分類: 職場生活

          評論:
          # re: 簡介JAVA四種基本排序?qū)嵗?收藏) 2012-02-20 11:11 | tms
          收藏了,感謝分享。  回復(fù)  更多評論
            
          道可道非常道,名可名非常名
          <2012年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          26272829123
          45678910

          常用鏈接

          留言簿(5)

          我參與的團(tuán)隊

          隨筆分類(174)

          隨筆檔案(200)

          文章分類(20)

          文章檔案(15)

          收藏夾

          開源網(wǎng)站

          朋友博客

          最新隨筆

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永福县| 兴和县| 阿拉尔市| 丰台区| 巴林右旗| 晴隆县| 桦川县| 阿勒泰市| 靖远县| 怀化市| 金秀| 东乌珠穆沁旗| 九台市| 崇州市| 丹棱县| 山东| 金平| 淮南市| 扬中市| 长汀县| 永城市| 华安县| 龙游县| 墨江| 甘肃省| 阳东县| 驻马店市| 麻城市| 富阳市| 兴海县| 临邑县| 合川市| 滁州市| 涞水县| 广州市| 平安县| 涿州市| 金乡县| 芒康县| 富川| 抚宁县|