精品日本亚洲一区二区三区,伊人久久狼人色精品无码 ,日鲁夜鲁天天鲁视频,国产精品久久亚洲,秋霞理论理论福利院久久,国产日韩欧美视频一区二区三区,色九九,国产精品美女久久久久久免费 ,九九干,韩国精品一区二区三区

考研論壇

 
查看: 783|回復: 5
打印 上一主題 下一主題

(Multimedia Dr)第二次算法作業

[復制鏈接]

215

主題

8711

帖子

6萬

積分

論壇元老

傳說此人已不在江湖

Rank: 7Rank: 7Rank: 7

精華
16
威望
55419
K幣
5637 元
注冊時間
2010-3-5

2016年優秀版主2015年下半年優秀版主2015年上半年優秀版主2014年下半年優秀版主考研論壇2013年下半年優秀版主考研論壇2013年上半年優秀版主

跳轉到指定樓層
樓主
發表于 2012-11-5 19:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
3 Divide and Conquer
假設多邊形的頂點                               , 標識n+1邊的圖多邊形分成三角形的個數。
選擇一條邊作為基邊,例如邊 ,從頂點 中選擇一個頂點與邊 構成三角形,這樣就把多邊形分為三個區域 為剩余的多邊形部分,那么 區域有k+1條邊, 有n-k+1條邊,根據排列組合的乘法原則,此分法的不同三角形的分法有 ,而三角形頂點的選擇可以從頂點 中任意選擇一個,根據排列組合的加法原則
已知 ,所以可以根據遞推算出 的結果。
偽代碼如下
Int triangleCount(intedgeCount)
{
    If(edgeCount == 1)
       Return 1;
    If(edgeCount == 2)
       Return 2;
    Else
    {
       sum = 0;
       For i = 1: n-1
           sum = sum + triangleCount(i) * triangleCount(edgeCount -i);
       return sum;
}
時間復雜度分析
主要操作在 ,triangleCount(n),執行n-1次,triangleCount(n-1),執行n-2次,一次類推,所以總的相加次數為(n-1) + (n-2)+…+1,復雜度為o(n2).
6 sorting
win7,i3-350,2g 內存下三種排序算法運行20次平均消耗時間如下





歸并排序


快速排序


隨機快速排序


時間(ms)


26610


9036


37


從上面的數據可以看出隨機快速排序最快,明顯好于其他兩個排序算法,歸并排序最慢,另外對于后兩種排序算法,pivot選用隨機數能夠有效的提高算法的執行速度。
1 非遞歸歸并排序
public class MergeSort {
    privateint array[] ;
    publicMergeSort()
    {
       LoadDatald = new LoadData();
       array= ld.getData();
    }
    publicvoid sort()
    {
       intlen = 1;
       while(len< array.length * 2)
       {
           intstart  = 0;
           while(start<  array.length)
           {
              intend = start + len;
              if(end>= array.length)
                  end= array.length;
              for(inti = start;i < end-1; i++)
                  for(int j = i+1;j< end; j++)
                  {
                     if(array[j]< array)
                     {
                         inttemp = array;
                         array= array[j];
                         array[j]= temp;
                     }
                  }
              start= end + 1;
           }
           len*=2;
       }
    }
    publicstatic void main(String[] args) {
       //TODO Auto-generated method stub
       MergeSortsort = new MergeSort();
       longstart = System.currentTimeMillis();
       sort.sort();
       longcost = System.currentTimeMillis() - start;
       System.out.println(cost);
    }
}
2 快速排序
public class QuickSort {
    private int array[] = {4,5,3,6,8,1,2,7};
    public QuickSort()
    {
       LoadData ld = new LoadData();
       array = ld.getData();
    }
    public int partition(int start,int finish)
    {
       int pivot = -1;
       int elem = array[start];
       while(start < finish)
       {
           while(array[finish] > elem && start < finish )
           {
              finish--;
           }
           if(start == finish)
           {
              pivot = start;
              break;
           }
           int temp = array[finish];
           array[finish] = array[start];
           array[start] = temp;
           start++;
           while(array[start] < elem && start < finish)
           {
              start++ ;
           }
           if(start == finish)
           {
              pivot = start;
              break;
           }
           temp = array[finish];
           array[finish] = array[start];
           array[start] = temp;
           finish--;
       }
       if(start!=finish)
           return pivot;
       else
           return start;
    }
    public void sort()
    {
       int start = 0;
       int finish = array.length - 1;
       int k = partition(0,array.length -1);
       Stack<Integer> s = new Stack<Integer>();
       if(k-1 > start)
       {
           s.push(start);
           s.push(k-1);
       }
       if(k+1 < finish)
        {
           s.push(k+1);
           s.push(finish);
       }
       while(!s.empty())
       {
           finish = s.pop();
           start = s.pop();
           k = partition(start, finish);
           if(k-1 > start)
           {
              s.push(start);
              s.push(k-1);
           }
           if(k+1 < finish)
           {
              s.push(k+1);
              s.push(finish);
           }
       }
    }
    public static void main(String[] args) {
       // TODO Auto-generatedmethod stub
       QuickSort sort = new QuickSort();
       long start = System.currentTimeMillis();
       sort.sort();
       long cost = System.currentTimeMillis() - start;
       System.out.println(cost);
    }
}
3 隨機的快速排序
public class RQuickSort {
    private int array[] = {4,5,3,6,8,1,2,7};
    public int partition(int start,int finish)
    {
       int pivot = -1;
       int random = (int)(Math.random()*(finish - start + 1));
       int elem = array[start+random];
       int temp = array[start + random];
       array[start + random] = array[start];
       array[start] = temp;
       while(start < finish)
       {
           while(array[finish] > elem && start < finish )
           {
              finish--;
           }
           if(start == finish)
           {
               pivot = start;
              break;
           }
           temp = array[finish];
           array[finish] = array[start];
           array[start] = temp;
           start++;
           while(array[start] < elem && start < finish)
           {
              start++ ;
           }
           if(start == finish)
           {
              pivot = start;
              break;
           }
           temp = array[finish];
           array[finish] = array[start];
           array[start] = temp;
           finish--;
       }
       if(start!=finish)
           return pivot;
       else
           return start;
    }
    public RQuickSort()
    {
       LoadData ld = new LoadData();
       array = ld.getData();
    }
    public void sort()
    {
       int start = 0;
       int finish = array.length - 1;
       int k = partition(0,array.length -1);
       Stack<Integer> s = new Stack<Integer>();
       if(k-1 > start)
       {
           s.push(start);
           s.push(k-1);
       }
       if(k+1 < finish)
       {
           s.push(k+1);
           s.push(finish);
       }
       while(!s.empty())
       {
           finish = s.pop();
           start = s.pop();
           k = partition(start, finish);
           if(k-1 > start)
           {
              s.push(start);
              s.push(k-1);
           }
           if(k+1 < finish)
           {
              s.push(k+1);
              s.push(finish);
           }
       }
    }
    public static void main(String[] args) {
       // TODO Auto-generatedmethod stub
       RQuickSort sort = new RQuickSort();
       long start = System.currentTimeMillis();
       sort.sort();
       long cost = System.currentTimeMillis() - start;
       System.out.println(cost);
    }
}
    -------------------------------------------------------------------
    個人文章匯總
    -------------------------------------------------------------------
    回復

    使用道具 舉報

    134

    主題

    2萬

    帖子

    0

    積分

    大區版主

    咩咩咩。。。很萌有木有。。。

    Rank: 8Rank: 8

    精華
    29
    威望
    1165984
    K幣
    44347 元
    注冊時間
    2010-11-25

    大區版主考研論壇2013年下半年優秀版主

    沙發
    發表于 2013-5-15 17:31 | 只看該作者
    恩呢。。。這個是真的作業。。。

    評分

    參與人數 1威望 +10 收起 理由
    598788523 + 10 加分

    查看全部評分

    回復

    使用道具 舉報

    77

    主題

    8365

    帖子

    5萬

    積分

    榮譽版主

    小博士,正能量。

    Rank: 8Rank: 8

    精華
    11
    威望
    49305
    K幣
    5445 元
    注冊時間
    2009-10-18

    圖漫專屬2014年上半年優秀版主

    板凳
    發表于 2013-5-15 17:58 | 只看該作者
    膜拜

    評分

    參與人數 1威望 +10 收起 理由
    598788523 + 10 課堂作業了

    查看全部評分

    回復

    使用道具 舉報

    74

    主題

    1萬

    帖子

    5萬

    積分

    論壇元老

    [Travel拉面館]饅頭哥哥

    Rank: 7Rank: 7Rank: 7

    精華
    5
    威望
    39621
    K幣
    14450 元
    注冊時間
    2011-3-11
    地板
    發表于 2013-5-16 14:33 | 只看該作者
    師父是不是特別聰明哇→ →
    回復

    使用道具 舉報

    23

    主題

    717

    帖子

    3225

    積分

    高級戰友

    Rank: 4

    精華
    0
    威望
    541
    K幣
    2684 元
    注冊時間
    2011-1-28
    5
    發表于 2013-5-16 16:57 | 只看該作者
    [em:42]
    回復

    使用道具 舉報

    74

    主題

    1萬

    帖子

    5萬

    積分

    論壇元老

    [Travel拉面館]饅頭哥哥

    Rank: 7Rank: 7Rank: 7

    精華
    5
    威望
    39621
    K幣
    14450 元
    注冊時間
    2011-3-11
    6
    發表于 2013-5-17 01:12 | 只看該作者
    我也要膜拜一下。。師父要保佑我學好財管。。里面有一堆公式TT-TT阿米豆腐~~

    評分

    參與人數 1威望 +6 收起 理由
    598788523 + 6 我很贊同

    查看全部評分

    回復

    使用道具 舉報

    您需要登錄后才可以回帖 登錄 | 注冊 人人連接登陸

    本版積分規則   

    關閉

    您還剩5次免費下載資料的機會哦~

    掃描二維碼下載資料

    使用手機端考研幫,進入掃一掃
    在“我”中打開掃一掃,
    掃描二維碼下載資料

    關于我們|商務合作|小黑屋|手機版|聯系我們|服務條款|隱私保護|幫學堂| 網站地圖|院校地圖|漏洞提交|考研幫

    GMT+8, 2026-6-21 21:01 , Processed in 0.095199 second(s), Total 14, Slave 10(Usage:7M, Links:[2]1,1_1) queries , Redis On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回復 返回頂部 返回列表
    × 關閉