演算法導論學習(一)

2021-06-23 03:58:00 字數 1910 閱讀 5572

插入排序演算法:

ex: 8 9 21 6 1

1.   1 9 21 6 8

2.   1 6 21 9 8

3.   1 6

8 9 21

4.   1 6

89 21

5.   1 6

89 21

歸併排序演算法:

ex: 8 9 21 6 1

1.   [

8 9] [

21 6 1]

2.    [

8 9][

21][6 1]

3.    [

8 9] [

21][1 6]

4.    [

8 9] [

1 6 21]

5.   

[1 6 8 9 21]

二分查詢演算法:

ex:1 2 3 4 5 6

button      up

find 2:      [1 2 3] [4 5 6]     3>=2 成立     繼續查詢左邊  05

[1 2] [3]            1>=2 不成立 繼續查詢右邊  01

[2]   2>=2 成立找到位置       00

c**:

#include "stdio.h"

// 演算法導論

// 插入排序演算法

void insertsort(int* ninput, int nnum)

} ninput[nkey] = ninput[ni];

ninput[ni] = ntemp; }}

//歸併排序演算法

int mergesort(int* ninput, int nnum)

else if(nnum == 2) }

else

while(ni < nnum/2)

noutput[nk++] = ninput[ni++];

while(nj < nnum)

noutput[nk++] = ninput[nj++];

for (int i=0;i= nup)

else }

void main()

while((ntemp = getchar()) != '\n');

//insertsort(ninput, nnum);

mergesort(ninput, nnum);

printf("排序結果:\n");

for (ni = 0; ni < nnum; ni ++)

printf("%d ",ninput[ni]);

//二分查詢演算法

int nbutton = 0;

int nup = nnum-1;

int nkey;

printf("\n請輸入要查詢的數字:\n");

scanf("%d",&nkey);

printf("你要找的數為第%d個數。\n", 1 + binarysearch(ninput, nkey, nbutton, nup));

}

乘方問題:輸入兩個數n,x 計算 x^n.

採用遞迴的方法

if n是奇數   返回 x*x^(n-1);

else n是偶數 返回x^(n);

**:

//演算法導論 

//遞迴演算法學習

#include // 計算nnum的ncount次乘方

int powernum(int nnum, int ncount)

int main()

} printf("結果為:%d 。",(ncount%2==0)?powernum(nnum,ncount):nnum*powernum(nnum,ncount-1));

}

演算法導論學習1

第一章 演算法在計算中的作用 演算法的定義 簡單的說就是定義良好的計算過程,由輸入得到輸出!演算法的作用 應用非常廣泛,許多問題都涉及到演算法!演算法的重要性 是否擁有紮實的演算法知識和技術基礎,是區分真正熟練的程式設計師與新手的一項重要特徵。第二章 演算法入門 學習演算法的目的,不僅僅是很快理解演...

演算法導論學習2

一般的,對於演算法來說,重點關注的是對演算法的時間和空間度量,也就是時間複雜度和空間複雜度。演算法所需要的時間與輸入的規模同步增長的,而時間複雜度就是衡量演算法執行的基本運算元的乙個函式。對於插入排序來說,當需要排列的陣列分別為順序排列和逆序排列時,演算法的時間複雜度是不一樣的。根據演算法執行的每一...

演算法導論 學習問題

演算法導論 裡的counting sort,用c 實現有問題 include include using namespace std void counting sort vector a,vector b,const int k delete c int main for auto index c...