冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。两者的实现源码为:
冒泡排序:
|
template <class Item> void BubbleSort(Item* data,int len) { for (int i = 0;i < len; ++i) for (int j = len - 1; j > i; --j) { if (data[j] > data[j - 1]) { Exch2Item(data[j],data[j - 1]); } } } |
选择排序:
|
template <class Item> void SelectSort(Item* data,int len) { for (int i = 0; i < len; ++i) { int min = i; //找到当前未排序最小的元素 for (int j = i + 1; j < len; ++j) { if (data[j] < data[min]) min ++; } Exch2Item(data[i],data[min]); } } |
测试程序为:
|
int main(int argc,char* argv[]) { int* data = InitData<int>(10,100); PrintData<int>(data,10,"before BubbleSort");
// BubbleSort(data,10); SelectSort(data,10);
PrintData<int>(data,10,"after BubbleSort"); return 0; } |
需要说明和注意的是:InitData 和PrintData定义和实现在排序与查找——备用函数给出的,请参考上一篇文章。
浙公网安备 33010602011771号