ide clion;win10數組
#include <stdio.h> /** 設置一個嵌套循環 第一層循環爲前九個(假設數組共6個元素),並在每次循環時將對應當前次數的數組元素設置爲(假設爲)最大值。 在第二層循環中,循環比較該元素以後的每一個數組元素,並將每次比較結果中較大的數設置爲最大值。 在第二層循環結束時,將最大值與開始時設置的最大值(假設的)數組元素進行互換。 當全部循環都完成之後,就將數組元素按照從大到小的順序從新排列了 * @return */ int main() { int i, j; int a[6] = {6, 3, 8, 2, 9, 1}; int itemp;//假定的最大值,通常爲默認第一個數 int iPos; for (int i = 0; i < 5; i++) { itemp = a[i];//假定當前循環內最大值爲當前第一個元素 iPos = i;//假定當前最大值的下標 for (int j = i + 1; j < 6; j++) { printf("內循環內第%d次比較,用數字 %d與第%d個數%d比較\n", j, itemp, j, a[j]); if (a[j] > itemp) { printf("%d比%d假設的itemp大,交換\n", a[j], itemp); itemp = a[j]; iPos = j; printf("如今的假定最大的值爲%d,他在數組內的下標爲%d\n", itemp, j); } } printf("內循環內第%d次結束\n", i + 1); printf("如今a[i]的值爲%d,itemp的值爲%d,a[ipos]的值爲%d\n", a[i], itemp, a[iPos]); a[iPos] = a[i];//把原來認爲最大的值的下標i與i+1次後實際的最大得值的下標ipos交換 a[i] = itemp;//把最大的值放在i+1次排序後的第一個位置。仍然假設當前爲爲最大值,可是這次已經證實了i+1次 printf("外循環內第%d次結束\n\n", i); } for (int i = 0; i < 6; i++) { printf("%d\t", a[i]); if (i == 2) { printf("\n"); } } return 0; }
C:UsersvolvoCLionProjectsuntitledcmake-build-debuguntitled.exe
內循環內第1次比較,用數字 6與第1個數3比較
內循環內第2次比較,用數字 6與第2個數8比較
8比6假設的itemp大,交換
如今的假定最大的值爲8,他在數組內的下標爲2
內循環內第3次比較,用數字 8與第3個數2比較
內循環內第4次比較,用數字 8與第4個數9比較
9比8假設的itemp大,交換
如今的假定最大的值爲9,他在數組內的下標爲4
內循環內第5次比較,用數字 9與第5個數1比較
內循環內第1次結束
如今a[i]的值爲6,itemp的值爲9,a[ipos]的值爲9
外循環內第0次結束ide
內循環內第2次比較,用數字 3與第2個數8比較
8比3假設的itemp大,交換
如今的假定最大的值爲8,他在數組內的下標爲2
內循環內第3次比較,用數字 8與第3個數2比較
內循環內第4次比較,用數字 8與第4個數6比較
內循環內第5次比較,用數字 8與第5個數1比較
內循環內第2次結束
如今a[i]的值爲3,itemp的值爲8,a[ipos]的值爲8
外循環內第1次結束ui
內循環內第3次比較,用數字 3與第3個數2比較
內循環內第4次比較,用數字 3與第4個數6比較
6比3假設的itemp大,交換
如今的假定最大的值爲6,他在數組內的下標爲4
內循環內第5次比較,用數字 6與第5個數1比較
內循環內第3次結束
如今a[i]的值爲3,itemp的值爲6,a[ipos]的值爲6
外循環內第2次結束debug
內循環內第4次比較,用數字 2與第4個數3比較
3比2假設的itemp大,交換
如今的假定最大的值爲3,他在數組內的下標爲4
內循環內第5次比較,用數字 3與第5個數1比較
內循環內第4次結束
如今a[i]的值爲2,itemp的值爲3,a[ipos]的值爲3
外循環內第3次結束code
內循環內第5次比較,用數字 2與第5個數1比較
內循環內第5次結束
如今a[i]的值爲2,itemp的值爲2,a[ipos]的值爲2
外循環內第4次結束排序
9 8 6
3 2 1
Process finished with exit code 0ip