前言一、问题-思路二、源码三、结果四、总结
前言
这里做个简单的桶排序,方便大家对排序有个清晰简单的入门。其 *** 作主要依靠一维数组。
一、问题-思路 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三、结果 四、总结 很容易看出桶排序依靠数组进行排序十分便捷,但是其有一个很致命的缺点,那就是浪费空间。比如你需要对两个数字1、99,999进行排序,则所需要开辟的空间就是100,000呀。。。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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)