數據結構筆記

算法應該滿足的五個特性

1、有窮性

2、確定性

3、可行性

4、有輸入

5、有輸出

設計算法考慮的因素:

1、正確性:a.程序中不含語法錯誤b.程序對於幾組輸入數據能滿足要求c、對於精心選擇、典型、可可且帶有刁難性d、對於所有一切合法的輸入數據都能滿足要求

2、可讀性:易於人的理解;晦澀難讀的程序易於隱藏較多錯誤而難以調試;

3、健壯性:

4:高效率與地存儲

三、算法效率的衡量方法和準則

事後統計法

缺點:1、必須執行程序

           2、其他因素掩蓋算法本質

事前分析估算法

 

和算法執行時間相關的因素:

1、算法選用的策略

2、問題的規模

3、編寫程序的語言

4、編譯程序產生的機器代碼的質量

5、計算機執行指令的速度

T(n) = O(f(n))

稱T(n)爲算法的(漸進)時間複雜度

如何估算算法的時間複雜度?

算法 = 控制結構  + 原操作(固有數據類型的操作)

算法的執行時間 與 原操作執行次數之和成正比

for(i=1;i<=n;++i)

  for(j=1;j<=n;++j){

    c[i,j] = 0;

    for(k = 1; k <= n;++k)

 選擇排序

void select_sort(int a[], int n) {

 

基本操作:比較(數據元素)操作

語句的頻度

void bubble_sort(int a[], int n) {
 for (i = n-1,change=TRUE; i>1&&change; --i)
 {
  change = FLASE;
  for (j =0;j<i;++j)
  {
   if (a[j]>a[j+1])
   {
    a[j] <-->a[j+i];
    change =TRUE;
   }
  }
 }
}

 算法的存儲量包括:

1、輸入數據所佔空間

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章