排序练习,从哪里开始?

时间:2016-11-29 21:20:05

标签: sorting

我觉得我想乱搞并试图设计一些排序算法,看看像是泡泡排序,看看我是否可以快速排序工作,但我遇到的第一个问题是我应该如何存储和处理我的数据?它应该从哪里来?

我应该只声明一个包含几千个索引字段的数组,并手动输入并随机化我的数据吗?或者我应该创建一个堆栈?

如何获取这些随机数?当然,我不会产生数以千计的手动输入它们。

为了简单起见,我想我只会坚持使用整数。

4 个答案:

答案 0 :(得分:1)

如果您的问题只是获取测试用例,您可以使用HackerRank编写算法,并且他们有很多测试用例。以下是所有排序挑战的链接:

https://www.hackerrank.com/domains/algorithms/arrays-and-sorting

答案 1 :(得分:0)

我不确定你在这里问什么。你能具体一点吗?如果问题是如何生成排序输入,那么你绝对可以使用随机化。如果您正在寻找学习排序的好地方,我建议您介绍Cormen的算法。

答案 2 :(得分:0)

https://www.topcoder.com/community/data-science/data-science-tutorials/sorting/

我喜欢使用上面的topcoder链接作为排序的参考。他们有所需的算法,并且免费提供。你不应该使用教科书。

对于数据输入,测试用例可以通过hackerrank获得,如另一个答案所述,或者你可以编写一个函数来随机生成数字。

例如,如果您使用的是Java,则可以使用Random:

import java.util.Random;

public static int randInt(int min, int max) {

     Random randNum;
     int randomNum = randNum.nextInt((max - min) + 1) + min;

     return randomNum;
 }

然后你可以使用这样的函数在循环中一次生成一个随机数,放入一个数组进行排序。

例如:

int toSort = 1000;
int[] arrayToSort = new int[toSort];

for(int numsToSort = toSort; numsToSort > 0; numsToSort--){
    arrayToSort[numsToSort] = randInt(0, 100);
}

在这里,我生成一个1000项数组,其随机整数介于0和100之间。

答案 3 :(得分:0)

好吧我也许应该在发布之前再研究一下,因为事实证明在c#framework中有一个现成的生成随机数的方法。所以这只是创建一个X数为空格并运行一个循环X次,以便在该数组索引中插入一个随机数。

现在我必须弄清楚如何编码比较