list排序

非递归全排序(非字典算法)

假装没事ソ 提交于 2020-02-05 13:30:46
非c++ next_permutation方式 数组不可有重复值(等待改进中) 思路: nums = [1,2,3, 4] 先建立空lists 数量为n! = 4! = 24 [ [], [], [], . . . ] sPtr = 0 [1, 2, 3, 4] 3!=6次插入nums[sPtr]后,指针sPtr后移(超出回归0) [ 1 , // sPtr = 0 1 , 1 , 1 , 1 , 1 , 2 , // sPtr = 1 … … … ] [1, 2, 3, 4] 插入前检测nums[sPtr] 是否已存在当前list中,是则指针sPtr后移(超出回归0) 2!=2次插入nums[sPtr]后,指针sPtr后移(超出回归0) [ [ 1 , 2 // sPtr = 1 1 , 2 1 , 3 // sPtr = 2 1 , 3 1 , 4 // sPtr = 3 1 , 4 … // sPtr = 0 … … ] [1, 2, 3, 4] 插入前检测nums[sPtr] 是否已存在当前list中,是则指针sPtr后移(超出回归0) 1!=1次插入nums[sPtr]后,指针sPtr后移(超出回归0) [ 1 , 2 , 3 1 , 2 , 4 1 , 3 , 2 1 , 3 , 4 1 , 4 , 2 1 , 4 , 3 … … … ] [1, 2, 3, 4]

排序算法

安稳与你 提交于 2020-02-05 03:05:24
10种排序算法总结(冒泡、选择、插入、希尔、归并、快速、堆、拓扑、锦标赛、基数) 2011年01月20日 星期四 08:24 P.M. 排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标准: (1)执行时间 (2)存储空间 (3)编程工作 对于数据量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要。 主要排序法有: 一、冒泡(Bubble)排序——相邻交换 二、选择排序——每次最小/大排在相应的位置 三、插入排序——将下一个插入已排好的序列中 四、壳(Shell)排序——缩小增量 五、归并排序 六、快速排序 七、堆排序 八、拓扑排序 九、锦标赛排序 十、基数排序 一、冒泡(Bubble)排序 ----------------------------------Code 从小到大排序n个数------------------------------------ void BubbleSortArray() { for(int i=1;i<n;i++) { for(int j=0;i<n-i;j++) { if(a[j]>a[j+1])//比较交换相邻元素 { int temp; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } -----------------

【ARTS】01_05_左耳听风-20181210~1216

谁都会走 提交于 2020-02-05 02:31:39
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algorithm 【leetcode】125验证回文串 https://leetcode.com/problems/valid-palindrome/ 1)problem 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 2)answer 1、普通思路 把数字和字符提取出来,然后如果是字母就转换为小写。加到新的字符串中。 对于这个新的字符串,使用一个多条件循环,分别从字符串头、字符串尾遍历字符串的中间值,如果不一致就退出。直到遍历结束还是一致就判定为回文字符串。 2、高级思路 在discuss看到的答案。 用一个大循环分别从字符串头、字符串尾遍历字符串的中间值,里面两个小循环,用isalnum()函数判断是不是字母数字,如果不是就向前移动指针。 https://leetcode.com/problems/valid-palindrome

Comparable与Comparator接口

北慕城南 提交于 2020-02-04 15:02:14
  从上面的两个接口看Collections.sort()与Arrays.sort()的两种用法是这篇文章的主要目的。   Collections.sort()是集合的排序,在使用此方法的时候有两种途径可供我们选择:一种是要排序的集合中的成员实现Comparable接口,并重写conpareTo();另一种是实现自己的排序类(实现Comparator),并作为参数传给sort()方法。示意如下:       方法1:   class Student implenents Comparable{compareTo()}//要排序的类              ArrayList list = new ArrayList().add(new Student());//将上诉类装到集合中              Collection.sort(list);//调用Collection的sort()方法进行排序       方法2:   class Student{}//要排序的类              MyComparator implenents Comparator{compare()}//实现自己的排序类              ArrayList list = new ArrayList().add(new Student());//将上诉类装到集合中          

DataFrame(8):DataFrame的排序问题

这一生的挚爱 提交于 2020-02-04 13:15:34
1、说明   DataFrame中的排序分为两种,一种是对索引排序,一种是对值进行排序。   对于索引排序,涉及到对行索引、列索引的排序,并且还涉及到是升序还是降序。函数df.sort_index(axis= , ascending= , inplace=),需要特别注意这三个参数。axis表示对行操作,还是对列操作;ascending表示升序,还是降序操作。   对于值排序,同样也是涉及到行、列排序问题,升序、降序排列问题。函数df.sort_values(by= , axis= , ascending= , inplace=),也需要特别注意这几个参数,只是多了一个by操作,需要我们指明是按照哪一行或哪一列,进行排序的。    注意:axis=0表示对行操作,axis=1表示对列进行操作;ascending=True表示升序,ascending=False表示降序;inplace=True表示对原始DataFrame本身操作,因此不需要赋值操作,inplace=False相当于是对原始DataFrame的拷贝,之后的一些操作都是针对这个拷贝文件进行操作的,因此需要我们赋值给一个变量,保存操作后的结果。 2、索引排序:df.sort_index() ① 对行索引,进行升序排列 df = pd . DataFrame ( { "A" : [ 1 , 3 , 5 , 7 , 9 ]

山东大学——数据结构实验全集

白昼怎懂夜的黑 提交于 2020-02-03 21:55:41
感悟数据结构的实验真的很重要,感觉实验做的好一般都能得高分,所以大家做完正式实验后尽量做一下补充实验有好处。时间和精力有限,我只是整理了正式实验的,好了上干货。 1.实验一 递归练习 1)要求: (我只是完善逻辑,并没有关于输入输出格式的代码。) 2)逻辑 以四个数为例:全排列数为24,只以一为开头的有6种 1.2.3.4为第一个。 1.2.4.3 1.3.2.4 1.3.4.2 1.4.3.2 1.4.2.3 每当长度等于4时就输出结果,递归地将位置交换 for (int i = start; i < end; ++i) { swap(list[start],list[i]); permutation(list,start+1,end); swap(list[start],list[i]); } 3)代码: //输出方法 void system(int list[],int end){ for (int i = 0; i < end ; ++i) { cout<<list[i]; if(i!=end-1){ cout<<","; } } cout<<endl; } //实现方法 void permutation(int list[],int start,int end){ if(start == end){ system(list,end); } else{ for (int i

牛客网 字符串的排序

99封情书 提交于 2020-02-03 00:29:29
题目: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 解题: import java.util.List; import java.util.Collections; import java.util.ArrayList; public class Solution { public ArrayList<String> Permutation(String str) { List<String> res = new ArrayList<>(); if (str != null && str.length() > 0) { PermutationHelper(str.toCharArray(), 0, res); Collections.sort(res);//对String进行排序 } return (ArrayList)res; } public void PermutationHelper(char[] cs, int i, List<String> list) { if (i == cs.length - 1) { String val = String

前端之JavaScript

做~自己de王妃 提交于 2020-02-01 12:22:33
JavaScript概念 什么是JavaScript JavaScript是由三部分组成: 核心 文档对象模型(DOM) 浏览器对象模型(BOM) JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 JavaScript 是可插入 HTML 页面的编程代码。 JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。 JavaScript 很容易学习。 JS的引入方式 #script标签引入JS代码 <script> //JS代码 </script> #引入额外的JS文件 <script src="myscrpits.js"></script>    JS代码的注释 #单行注释 //这是单行注释 #多行注释 /* 这是多行的注释 */ 注意:JavaScript中的语句要以分号(;)为结束符。 JS的变量声明 1.JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。 2.声明变量使用 var 变量名; 的格式来进行声明。 var name = "shier" var age = "16" 注意: 变量名是区分大小写的。 推荐使用驼峰式命名规则。 保留字不能用做变量名。 JS的数据类型 1.JS拥有的动态类型 var x; // 此时x是undefined var x = 1; //此时x是数字 var x =

js-sort数组排序

一笑奈何 提交于 2020-02-01 09:30:00
婆婆妈妈,直上代码: 1 <body> 2 <div> 3 sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 4 </div> 5 <div id="showBox"> 6 1、简单数组简单排序 7 <script type="text/javascript"> 8 var arrSimple=new Array(1,8,7,6); 9 arrSimple.sort(); 10 document.writeln(arrSimple.join()); 11 </script> 12 </div> 13 <div> 14 2、简单数组自定义排序 15 <script type="text/javascript"> 16 var arrSimple2=new Array(1,8,7,6); 17 arrSimple2.sort(function(a,b){ 18 return b-a}); 19 document.writeln(arrSimple2.join()); 20 </script> 21 解释:a,b表示数组中的任意两个元素,若return > 0 b前a后;reutrn < 0 a前b后;a=b时存在浏览器兼容 22 简化一下:a-b输出从小到大排序,b-a输出从大到小排序。 23 </div> 24 <div> 25 3、简单对象List自定义属性排序 26

ArrayList自带排序用法

纵饮孤独 提交于 2020-01-31 10:57:27
ArrayList自带排序用法 如果是字符串排序 List array= new ArrayList<>(); array.sort(new Comparator(){ @Override public int compare(String arg0, String arg1){ return arg0.compareTo(arg1); } }); 这里主要是重写的compare方法,如果是实体类,我们需要根据里面的属性进行比较排序,这个方法无非就是我们是用什么排序规则 来源: CSDN 作者: weixin_42452839 链接: https://blog.csdn.net/weixin_42452839/article/details/104121275