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...