冒泡排序

思路:
1.比较相邻的元素。如果第一个比第二个大,就交换它们两个
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数
3.针对所有的元素重复以上的步骤,除了最后一个
4.重复步骤1~3,直到排序完成

代码实现:

#include <iostream>
using namespace std;
template<typename T> //整数或浮点数皆可使用,若要使用类(class)或结构体(struct)时必须重载大于(>)运算符
void bubble_sort(T arr[], int len) 
{
    for(int  i = 0; i < len - 1; i++)
        for(int j = 0; j < len - 1 - i; j++)
            if (arr[j] > arr[j + 1])
               swap(arr[j], arr[j + 1]);
}
int main() 
{
    int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };
    int len = (int)sizeof(arr) / sizeof(*arr);
    bubble_sort(arr, len);
    for (int i = 0; i < len; i++)
         cout << arr[i] << ' ';
    cout << endl;
    double arrf[] = { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.8, 5.4 };
    len = (int)sizeof(arrf) / sizeof(*arrf);
    bubble_sort(arrf, len);
    for (int i = 0; i < len; i++)
            cout << arrf[i] << ' '<<endl;
    return 0;
}
posted on 2021-04-12 22:44  逆流而上の鱼  阅读(662)  评论(0编辑  收藏  举报