C語言 選擇排序 折半查詢法與二維陣列

2021-07-03 15:25:27 字數 1489 閱讀 8325

19.選擇排序

for(int

i = 

0; i1

; i++)

for(int

k = 

0; k < len; k++)

printf

("\n");

} printf

("\n");

} 20.折半查詢法

①基本思路:在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功;若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢; 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷重複上訴查詢過程,直到查詢成功。

#include 

intfind(

inta,

intnum,

intlen) if

(a[mid] > num) if

(a[mid] == num) }

return

key; }

intmain(

intargc, 

const

char

* argv) ;

intlen = 

sizeof

(a) / 

sizeof

(int);

intnum = 23;

intkey = 

find

(a, num,len);

printf

("the key number is %d,key is %d\n"

,num,key);

return0;

}21.二維陣列

①乙個一維陣列的每個元素又被宣告為乙個一維陣列,從而構成二維陣列,可以說是二維陣列是乙個特殊的一維陣列。

②定義: 陣列名[第一維的長度(行)] [第二維的長度(列)]; int a[2][3];  int b[1+3][3}  ; #difine m 3 int c[m][m+3]。

③初始化:

1)完全初始化:

正常賦值:int a[2][3] = ,};

連續賦值:int a[2][3] = ;

可以省略第一維:int a[3] = ,,};     //等價於int a[3][3];       

int a[2] = ;     //等價於int a[4][2]=;

2)部分初始化:

int a[3][4]= ;   //a[0][0]被賦值為1,其他全為0;

④儲存方式:

1)計算機會給二維陣列分配一塊連續的儲存空間;

2)陣列名代表陣列的首位址,從首位址開始,依次存入第一行、第二行....第n行;

3)每一行的儲存方式,從行首位址開始,依次儲存行的第1個元素、第2個元素...第n個元素;

4)每個元素占用相同的位元組數(取決於陣列型別);

5)並且陣列中元素之間的位址是連續的;

6)首位址 = 陣列名位址 = 第一行的位址 = 第一行第乙個元素位址

c語言選擇排序 選擇排序法 C語言

直接選擇排序的基本思想 n個記錄的直接選擇排序可經過 n 1 趟直接選擇排序得到有序結果。初始狀態 無序區為 a 1.n 有序區為空。第 1 趟排序 在無序區 a 1.n 中選出最小的記錄a k 將它與無序區的第 1 個記錄 a 1 交換,使 a 1 1 和 a 2.n 分別變為記錄個數增加1的新有...

C語言選擇法排序

思路 通過反覆求最大值進行排序 a,一組數有n個數 b,通過比較前乙個數值與後乙個數值,找出其中最大的數,放在a 0 中 c,通過比較前乙個數值與後乙個數值,找出第二大數,放在a 1 中 d,通過比較前乙個數值與後乙個數值,最後最小的數,放在a n 1 中 如果前值小於後值,則進行值替換 最多有n ...

(c語言)選擇排序法和氣泡排序法

問題描述 給定乙個陣列 或者輸入乙個陣列 分別運用選擇排序法和氣泡排序法將所要的結果輸出。程式分析 選擇排序 1 對於選擇排序,首先理解排序的思想。給定乙個陣列,這種思想首先假定陣列的首元素為最大 最小 的。此時就要利用3個變數i,j,k表示元素的下標。i表示當前,j表示找到的最大 最小 的下標,k...