先上代码:
#include<iostream>
#include<vector>
#include <cstdlib>
#include <ctime>
#include<algorithm>
using namespace std;
int main()
{ //冒号排序
clock_t start, end;
start = clock();
vector<int> num_1;
srand((int)time(0)); // 产生随机种子 把0换成NULL也行
for (int i = 0; i < 10000; i++)
{
num_1.push_back(rand() % 1000);
}
//只需要将n-1个数移到最右边即可
for (int i = 1; i < num_1.size(); i++)
{for (int j = 0; j < num_1.size()- i; j++)
{
if (num_1[j] > num_1[j + 1])
{
int tem = num_1[j + 1];
num_1[j + 1] = num_1[j];
num_1[j ] = tem;
//swap(num_1[j + 1], num_1[j]);
}}
}
for (auto i : num_1)
cout << i << " ";
cout << endl;
end = clock();
cout << "time=" << static_cast<double>(end - start) / CLOCKS_PER_SEC << endl;}
说明:
冒号排序原理(升序):前后两个数相对比,大的往后移动 小的交换到左边
对于第一个数 需要交换 n-1次
对于第二个数 需要交换n-2次
...............................................
对于第n-1个数 交换1次
完成排序
建议使用草稿纸模拟下
感谢观看,新人博主,谢谢关注,持续更新