<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-60  評(píng)論-117  文章-0  trackbacks-0

         想總結(jié)一下這個(gè)問(wèn)題是因?yàn)檫@是找工作的時(shí)候必考的東西。我最近很擔(dān)心會(huì)被解雇。以后再什么事也不上心可不行。到了一個(gè)新環(huán)境畢竟不像在大學(xué)里那么游刃有余了。
    接收數(shù)組的java源程序:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;

     class Sort {
     int Length = 0;
     
     public int[]Input(){
      
      try {

       

        BufferedReader num = new BufferedReader(new InputStreamReader(
          System.in));
        Length = Integer.parseInt(num.readLine());
       

      } catch (Exception e) {
       e.printStackTrace();
      }//從客戶端接收要排序的數(shù)組的長(zhǎng)度。
      int[] a = new int[Length]; 
      try {

       for (int i = 0; i < a.length; i++) {

        BufferedReader array_int = new BufferedReader(new InputStreamReader(
          System.in));
        a[i] = Integer.parseInt(array_int.readLine());
       }

      } catch (Exception e) {
       e.printStackTrace();
      }//從客戶端接收要排序的數(shù)組。
    return(a);
     }
     
    }
    上面一段代碼主要完成接收要排序的數(shù)組的功能。也可以自己指定一數(shù)組,不影響這里要講的主要問(wèn)題。
          直接插入排序:
    算法思想:每次將一個(gè)待排序的數(shù)據(jù)元素,插入到前面已經(jīng)排好序的數(shù)列中的適當(dāng)位置,使數(shù)列依然有序;直到待排序數(shù)據(jù)元素全部插入完為止。
    java 源程序:

    package sort.insertSort;

    import java.util.Arrays;


    public class DirectInsertSort {
     private static Integer[] insert(Integer[] sourceNums) {
      
      //如果沒(méi)有要排序的數(shù)據(jù),直接返回
      if(sourceNums == null || sourceNums.length == 0) {
       return new Integer[]{};
      }
      
      Integer nums[] = new Integer[sourceNums.length];//已排好序的數(shù)組。
      nums[0] = sourceNums[0];//先將一個(gè)數(shù)值放到nums中(因?yàn)橹挥幸粋€(gè)數(shù),也可以看作排好序的。
      
      for(int i=1; i<sourceNums.length; i++) {
       Integer num = sourceNums[i];
       for(int j=i; j>0; j--) {
        if(num >= nums[j-1]){//如果要插入的數(shù)值不小于最后一個(gè)數(shù)值,則直接插入到最后面。
         nums[j] = num;
         break;
        } else if(num < nums[j-1]) {//如果要插入的數(shù)值小于nums最后一個(gè)數(shù)值,則將nums當(dāng)前數(shù)值后移一位
         nums[j] = nums[j-1];
         if(j == 1) {
          nums[j-1] = num;//應(yīng)對(duì)當(dāng)要插入的數(shù)小于nums所有數(shù)的情況
         }
        }
       }
      }
      
      return nums;
     }

     public static void main(String[] args) {
      System.err.println(Arrays.toString(DirectInsertSort.insert(new Integer[]{34,56,78,-11,49,-45,-90,85})));
     }
    }

    選擇排序:
    算法思想:每一趟從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個(gè)元素,順序放在已排好序的數(shù)列的最后,直到全部待排序的數(shù)據(jù)元素排完。
    public class SelectSort extends Sort{
     public static  void main(String args[]) {
      Sort sort=new Sort();
      int[] a=sort.Input();   //調(diào)用父類函數(shù),接收字符串。
      int q;
      int i=0;
      while(i<a.length){
       int j=i;
       while(j<a.length){
        if(a[i]>a[j]){
         q=a[i];
         a[i]=a[j];
         a[j]=q;
        }
        
        j++;
       }
       i++;
      }//while循環(huán)部分完成排序。
       
      for(int j=0;j<a.length;j++){
       System.out.print(a[j]+"   "); 
     }
    }
    }
    冒泡排序 :
    算法思想:
    兩兩比較待排序數(shù)據(jù)元素的大小,發(fā)現(xiàn)兩個(gè)數(shù)據(jù)元素的次序相反時(shí)即進(jìn)行交換,直到?jīng)]有反序的數(shù)據(jù)元素為止。

    package sort.bubbleSort;

    import java.util.Arrays;

    public class BubbleSort {
     
     static Integer[] bubbleSort(Integer[] nums) {
      boolean change = true;
      int i;
      for(i=0; i< nums.length-1 && change; i++) {
       change = false;
       for(int j=0; j<nums.length-i-1; j++) {
        if(nums[j]>nums[j+1]) {
         int num = nums[j];
         nums[j] = nums[j+1];
         nums[j+1] = num;
         change = true;
        }
       }
       System.err.println(Arrays.toString(nums));
      }

      return nums;
     }

     public static void main(String[] args) {
      BubbleSort.bubbleSort(new Integer[]{34,56,78,-11,49,-45,-90,85,65,63,-12,33,35});
     }

    }


    希爾排序(縮小增量法)  
    算法思想:先取一個(gè)正整數(shù)d1<n,把所有相隔d1的記錄放一組,組內(nèi)進(jìn)行直接插入排序;然后取d2<d1,重復(fù)上述分組和排序操作;直至di=1,即所有記錄放進(jìn)一個(gè)組中排序?yàn)橹?nbsp; 
    public class ShellSorter extends Sort {
     public static void main(String args[]) {

      Sort sort = new Sort();
      int[] a = sort.Input();
      int q = 0;
      
      int group = a.length / 3 + 1;
      while(group > 0) {
       int i = 0;
       while (i < group) {
        int j = i;
        while ( j < a.length) {
         int k = j;
         while ( k > i) {
          if (a[k] < a[k - group]) {
           q = a[k];
           a[k] = a[k -group];
           a[k - group] = q;
           
          }
           k -= group;
         }
         j += group;
        }
        i++;
       }
       group--;
      }
      for (int j = 0; j < a.length; j++) {
       System.out.print(a[j] + "   ");
      }
     }
    }

    posted on 2007-04-18 10:05 靜兒 閱讀(425) 評(píng)論(7)  編輯  收藏 所屬分類: 技術(shù)

    評(píng)論:
    # re: 排序問(wèn)題 2007-04-19 05:41 | 山風(fēng)小子
    如果作為對(duì)數(shù)據(jù)結(jié)構(gòu)和算法的溫習(xí),自己實(shí)現(xiàn)排序算法是一個(gè)很不錯(cuò)的途徑。
    但如果在實(shí)際開(kāi)發(fā)中,我建議你使用Arrays類中的sort方法,和Collections類中的sort方法。  回復(fù)  更多評(píng)論
      
    # re: 排序問(wèn)題 2007-04-19 05:45 | 山風(fēng)小子
    再補(bǔ)充一句,
    Java對(duì)類名,接口名,方法名,變量名都有規(guī)范
    類名,接口名:首字母大寫,且用駝峰命名法命名,比如 HelloWorld
    方法名,變量名:首字母小寫,且用駝峰命名法命名,比如 sayHello()  回復(fù)  更多評(píng)論
      
    # re: 排序問(wèn)題 2007-04-19 08:28 | 靜兒
    @山風(fēng)小子
    十分感謝您的建議!  回復(fù)  更多評(píng)論
      
    # re: 排序問(wèn)題 2007-04-19 09:28 | cresposhi
    Java API中的sort是使用優(yōu)化了的合并排序算法,大多數(shù)情況下是效率是很高的,并且很穩(wěn)定。不過(guò)如果設(shè)計(jì)到特殊的場(chǎng)景可能還是需要自己來(lái)實(shí)現(xiàn)排序算法,所以熟練掌握各種排序算法絕對(duì)是必要的。  回復(fù)  更多評(píng)論
      
    # re: 排序問(wèn)題 2007-04-21 22:59 | 小飛鳥(niǎo)
    public voi maopao(int[] array)
    {
    int i,k;
    for(i=0;i<array.length;i++)
    {
    for(k=0;k<array.length-1-i;k++)
    {
    if(array[i]<array[i+1])
    {
    int temp = array[i];
    array[i] = array[i+1];
    array[i+1] = temp;
    }
    }
    }

    }

    一冒泡算法 呵呵 和你的比較一下 當(dāng)然 方法名的命名別學(xué)我 不規(guī)范喲。。  回復(fù)  更多評(píng)論
      
    # re: 排序問(wèn)題 2007-04-27 10:43 | ddd
    面試竟考這么些沒(méi)用的。。

    實(shí)際應(yīng)用中,幾乎用不到。。。  回復(fù)  更多評(píng)論
      
    # re: 排序問(wèn)題 2007-04-27 14:55 | 靜兒
    呵呵,你的看起來(lái)清晰多了。@小飛鳥(niǎo)
      回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 久久久久久久99精品免费观看| 一个人看www在线高清免费看| 中文字幕亚洲综合久久| 中文字幕无码视频手机免费看| 国产亚洲视频在线| 亚洲va中文字幕无码久久| 国产桃色在线成免费视频| 污视频网站免费观看| 久久伊人久久亚洲综合| 免费羞羞视频网站| 91在线视频免费观看| 亚洲午夜无码久久| 亚洲精品乱码久久久久久蜜桃不卡| 无码国产精品一区二区免费| 无遮挡国产高潮视频免费观看| 内射干少妇亚洲69XXX| 免费大片在线观看网站| 巨波霸乳在线永久免费视频 | 无人在线观看免费高清视频| 日日躁狠狠躁狠狠爱免费视频 | 久久综合亚洲色hezyo| 亚洲福利在线视频| 免费国产高清视频| 在线视频精品免费| 99re6在线视频精品免费| 亚洲国产av玩弄放荡人妇| 亚洲天堂中文字幕| 亚洲精品乱码久久久久久蜜桃| 在线观看免费人成视频色| 日韩av无码久久精品免费 | 欧美a级成人网站免费| 成在线人视频免费视频| 久久亚洲精品无码av| 亚洲AV综合色区无码二区爱AV| 亚洲精品乱码久久久久久久久久久久| 日韩人妻无码免费视频一区二区三区 | 亚洲日韩中文字幕天堂不卡| 国产gv天堂亚洲国产gv刚刚碰| 国产成人高清精品免费软件 | 国产亚洲日韩一区二区三区| 国产成人精品免费视频大全五级|