學習了選擇排序與氣泡排序後,以我目前的水平認為,選擇排序和氣泡排序的結果上,其實都是將整數型或浮點型的數排成有序數列的演算法,即將數從大到小或從小到大排列。
但是,它們使數排成有序數列的過程,是有不同的,於是我就有個疑問,它們實現排序的效率有何不同呢。
以下分別是是關於選擇排序與氣泡排序的**
選擇排序
#include using namespace std;
int main(void)
;//定義乙個若干整數的陣列
int nums_size = sizeof(nums) / sizeof(int);//算出有nums陣列有多少個數
int min = nums[0];//假設最小值就是陣列的第一位次
int index;
int temp;
for (int i = 0; i < nums_size; i++)
}//交換位置
temp = nums[i];
nums[i] = min;
nums[index] = temp;
} for (int i = 0; i < nums_size; i++)
return 0;
}
氣泡排序
#include using namespace std;
int main(void)
;//定義乙個若干整數的陣列
int nums_size = sizeof(nums) / sizeof(int);//算出有nums陣列有多少個數
int temp;
for (int i = 0; i < nums_size; i++)
}//交換位置
} for (int i = 0; i < nums_size; i++)
return 0;
}
由兩種方式排序的**可以清楚的得出,選擇排序比較專一,一心只想找到第i個最小的數,找到了第i次最小的數,就進入下一輪了。而氣泡排序比較拐彎抹角,它排序的過程與它的演算法的名字一致,陣列中的數是通過逐一的交換位置,實現的過程像水中的泡泡浮出水面一樣,過程很美麗,但這樣所耗費的時間較選擇排序來說應該是更長的。
經過n次測試,發現氣泡排序在相同情況下實現排序所耗費的時間確實要比選擇排序多些。
在這裡僅放一次對比圖進行比較吧(小夥伴們可以自行測試)
所耗費時間如圖所示
兩種氣泡排序
泡泡往前冒 for int i 1 i score.length i 例如 for int i 1 i score.length i system.out.print 第 i 次排序的結果 for int j 0 j score.length j system.out.println for int...
兩種排序方法
題目描述 考拉有n個字串字串,任意兩個字串長度都是不同的。考拉最近學習到有兩種字串的排序方法 1.根據字串的字典序排序。例如 car carriage cats doggies koala 2.根據字串的長度排序。例如 car cats koala doggies carriage 考拉想知道自己的...
兩種快速排序
快排是一種基於交換的排序,氣泡排序 兩兩相鄰作比較,逆序則交換 也是基於交換的排序,快排運用了二分法的思想,每次找乙個哨兵,比哨兵小的放一邊,大的放一邊,這是完成了一趟快排。冒泡 for int i 0 ia j 1 快排一 void quicksort int left,int right if ...