前言
这里做个简单的桶排序,方便大家对排序有个清晰简单的入门。其操作主要依靠一维数组。
一、问题-思路
1、自定义数组长度,动态分配数组。int* book = new int[maxNum];
2、使其数组全部置为0。book[0]、book[1]……book[maxNum] 均为0。
3、输入所需排序的值。
比如输入值为98、56、24等,则book[98]、book[56]、book[24]由0变为1。
4、判断输出。
若book的值大于0,则代表该点数列的值存在,而数组本身是线性排序完毕的,这时我们只需简单的遍历输出,倒序和顺序都可。
二、源码
#include <iostream>
using namespace std;
int main()
{
//1、初试数组
cout << "请输入需排序的序列最大值:";
int maxNum = 0;
cin >> maxNum;
int* book = new int[maxNum];
for (int i = 0; i < maxNum; i++)
{
book[i] = 0;
}
//2、输入排序序列
cout << "请输入要排序的序列的长度:";
int length = 0;
cin >> length;
cout << "请输入要排序的序列值:" << endl;
int testNum = 0;
for (int i = 0; i < length; i++)
{
cout << "第" << i + 1 << "个值:";
cin >> testNum;
book[testNum]++;
}
//3、排序输出
cout << "从小到大排序:";
for (int i = 0; i < maxNum; i++)
{
for (int j = 1; j <= book[i]; j++)
{
cout << i << " ";
}
}
return 0;
}