前言
在最初的剛接觸排序的時候,起初我確實只是簡單的能寫出過程,但是卻沒有詳細的去了解選擇與冒泡排序之間的區(qū)別。后來用代碼測試驗證后,才明白兩者的區(qū)別。
選擇排序
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據元素中選出最?。ɑ蜃畲螅┑囊粋€元素,存放在序列的起始位置,直到全部待排序的數(shù)據元素排完。
通俗的講就是,每一次循環(huán),都是拿當前索引去挨個比,找出最值,放大此索引中。如果有2個數(shù),需要循環(huán)1次,如果有N個數(shù),需要循環(huán)N-1次。代碼如下:
int nums[10]={100,34,288,1,199,199,288,0,10,3};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < lenth-1; i++) {
for (int j = i+1; j < lenth; j++) {
if (nums[i]<nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
printf("第%i比較后 \n",i+1);
for (int m = 0; m<lenth; m++) {
printf("%i ",nums[m]);
}
printf("\n\n");
}
printf("排序結果為:\n");
for (int i = 0; i<lenth; i++) {
printf("%i ",nums[i]);
}
printf("\n\n");
}
以上就是選擇排序,結果可自行打印就可清晰看到整個過程了。
冒泡排序
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。
它重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復地進行直到沒有再需要交換,也就是說該數(shù)列已經排序完成。代碼如下:
int nums[4]={100,34,288,1};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i=0; i < lenth-1; i++) {
for (int j = 0; j < lenth - 1 - i; j++) {
// printf("%i----%i\n",j,j+1);
if (nums[j] > nums[j+1]) {
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
printf("第%i次排序后:",i+1);
for (int i = 0; i<lenth; i++) {
printf("%i ",nums[i]);
}
printf("\n");
}
printf("最終的排序結果\n\n");
for (int i = 0; i<lenth; i++) {
printf("%i ",nums[i]);
}
以上就是冒泡排序,過程也可自行進行打印。

控制臺輸出
當然排序的算法還有很多種,后續(xù)再繼續(xù)測試說明快速排序。