这样的主题在面试中的算法很常见,在这里我也会自己总结
1 .输入一个数字n,逐行输出1~n组成的数字的全部数组,输出按数值升序排列https://blog.csdn.net/desire path/article/details/50447712
从数组的末尾开始,找到第一个升序的数字对,交换该数字对,从该数字对开始,按顺序交换以下所有数字。
2…按字典顺序对1到n个整数进行排序,返回排序后的第m个元素https://www.cn blogs.com/arge nbarbie/p/5982570.html
3359 blog.csdn.net/scorpion I/article/details/77644855
按词典顺序对1~n个整数进行排序,返回排序后的第m个要素
给定整数n,给定整数m,按词典顺序对1~n个整数进行排序,返回排序后的第m个元素。 n最灵巧的钢笔是5000000。 词典排序的意思是从最上面开始比较。 从1开始的数字开头,其次是从2开始的数字,其次是从3开始的数字……最高位的数字是相同的数字,用相同的逻辑比较下位的数字……如此。
例如,如果给定的整数为n=13,m=5,则词典的排序结果为[ 1,10,11,12,13,2,3,4,5,6,7,8,9 ],程序的最终输出为13。
这个问题是,没有必要把所有的词典按顺序排列,而是计算1、2。 判断小于这个数字的个数,依次增加,最后决定需要的m个是词典顺序中的哪个数。
3 .求出n位全数组字典的排序后,给定数组的下一个数组
这个问题返回到以前求完全数组的方法1。
总结:1.词典顺序的所有排列一般都有个数限制。 如果没有限制的话,按照词典顺序。 如果按照1、10、100、10000、100000、辞典的顺序进行,一般会给出个数的最大值来限制大小
2 .那么,求词典顺序的全部排列比较简单,所以用最初的方法进行
3 .如果想求n个字典序,中的第m个点,这时不能保存所有字典序再选择第m个点。 应该按照方法2判断每个数的开头。