前言
在最初的剛接觸排序的時(shí)候,起初我確實(shí)只是簡單的能寫出過程,但是卻沒有詳細(xì)的去了解選擇與冒泡排序之間的區(qū)別。后來用代碼測試驗(yàn)證后,才明白兩者的區(qū)別。
選擇排序
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個(gè)元素,存放在序列的起始位置,直到全部待排序的數(shù)據(jù)元素排完。
通俗的講就是,每一次循環(huán),都是拿當(dāng)前索引去挨個(gè)比,找出最值,放大此索引中。如果有2個(gè)數(shù),需要循環(huán)1次,如果有N個(gè)數(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("排序結(jié)果為:\n");
for (int i = 0; i<lenth; i++) {
printf("%i ",nums[i]);
}
printf("\n\n");
}
以上就是選擇排序,結(jié)果可自行打印就可清晰看到整個(gè)過程了。
冒泡排序
冒泡排序(Bubble Sort),是一種計(jì)算機(jī)科學(xué)領(lǐng)域的較簡單的排序算法。
它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。代碼如下:
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("最終的排序結(jié)果\n\n");
for (int i = 0; i<lenth; i++) {
printf("%i ",nums[i]);
}
以上就是冒泡排序,過程也可自行進(jìn)行打印。
控制臺輸出
當(dāng)然排序的算法還有很多種,后續(xù)再繼續(xù)測試說明快速排序。