一、冒泡排序
1、排序思想:假设对N个数进行排序,他们的位置分别是0、1、2....、N-1。首先比较0和1位置上的元素,如果0位置上的元素大于1位置上的元素,则交换两个位置上的元素,否则不做调整;接着比较1位置上和2位置上的元素,如果1位置上的元素大于2位置上的元素,则交换两个位置上的元素,否则不交换;..........;最后比较N-2和N-1位置上的元素,如果N-2位置上的元素大于N-1位置上的元素,则交换两个位置上的元素,这样经过一趟排序,最大的数就在N-1位置上。接着在0-N-2位置上继续遍历找出第二大的数放在N-2位置上,以此类推,从而得到一个升序排序序列。
2、代码实现
#include<iostream>
using namespace std;
template<typename T>
void bubble_sort(T list[], int len) //冒泡升序排序
{
for (int i = len - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (list[j] > list[j + 1])
bubble_swap(list[j], list[j + 1]);
}
}
}
template<typename T> //使用到T的地方都需要加template
void bubble_swap(T &x, T &y) //交换两个位置上的元素
{
T temp;
temp = x;
x = y;
y = temp;
}
int m