C語言 - 第十二章 | 循環演算 - 陣列
什麼是陣列?
陣列資料結構(英語:array data structure
),簡稱陣列(英語:Array
),是由相同類型的元素(element
)的集合所組成的資料結構,分配一塊連續的記憶體來儲存。利用元素的索引(index
)可以計算出該元素對應的儲存位址。
一維陣列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <stdio.h>
int main() { int i, array[5];
for (i = 0; i < 5; i++) { printf("%d:", i); scanf("%d", &array[i]); }
printf("\n"); for (i = 0; i < 5; i++) { printf("%d:%d\n", i, array[i]); }
return 0; }
|
二維陣列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <stdio.h>
int main() { int i, j, grade\[5]\[3];
for (i = 0; i < 5; i++) { for (j = 0; j < 3; j++) { printf("%d,%d:", i, j); scanf("%d", &grade[i][j]); } } printf("\n");
while (1) { printf("please input 0~4: "); scanf("%d", &i); if (i > -1 && i < 5) { printf("English:%d\n", grade[i][0]); printf("Chinese:%d\n", grade[i][1]); printf("ComputerScience:%d\n", grade[i][2]); } }
return 0; }
|
泡沫排序法
泡沫排序法是最容易學與最容易實作的排序法,如圖所示,假設我們要將陣列由小排到大,首先比前兩個,若前一個比較大則交換,接著比較二三個,若前面比較大則交換,直到將最大的排到最後面,在從頭進行一次排出次大的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h>
int main() { int i, j, k, temp; int test[5] = { 4,3,2,5,1 }; for (i = 0; i < 5 - 1; i++) { for (j = 0; j < 5 - i - 1; j++) { printf("\ni,j:%d,%d : ", i, j); for (k = 0; k < 5; k++) { printf("%d ", test[k]); } if (test[j] > test[j + 1]) { temp = test[j]; test[j] = test[j + 1]; test[j + 1] = temp; printf("swap"); } } } printf("\nend : "); for (k = 0; k < 5; k++) { printf("%d ", test[k]); } return 0; }
|
選擇排序法
選擇排序法直接找到最大的數的位子,將其放置正確的位置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h>
int main() { int i, j, k, temp, num; int test[5] = { 4,3,2,5,1 }; for (i = 4; i > -1; i--) { printf("\n%d : ", 5 - i); for (k = 0; k < 5; k++) { printf("%d ", test[k]); } num = 0; for (j = 0; j < i + 1; j++) { if (test[num] < test[j]) { num = j; } } temp = test[num]; test[num] = test[i]; test[i] = temp; } printf("\nend:"); for (k = 0; k < 5; k++) { printf("%d ", test[k]); } return 0; }
|
註:以上參考了
hackersir gitbooks