插入排序:是多次交换和移动,是稳定排序
交换排序:有冒泡排序(直接交换),快排序(分类思想)前者是稳定的,后者是不稳定的。
选择排序:多次比较,一次移动,不稳定的。
具体思想过程可百科。
java和c++中 sort方法比较
c++中需引用 #include<algorithm>头文件
int[] a={1,2,4,2,6,9,5,7,8,0,3}
sort(a,a+9)//默认升序
java中对于Array.sort Collector.sort都有与之对于的静态方法
Array.sort(a);//默认升序,可加参数
这两个不加参数的用,都是升序排序数组
但是对于sort(a,a+9,cmp)和Array.sort(a,new Comparator<myClass>())用法,却是不一样的
1、在c++中 int cmp(int a,int b){return a<b;} //默认升序 如果改为return a>b; 则为降序
2、在java中Comparator的方法compare的方法中
int compare(int a,int b){
return a-b;//升序
//return b-a;//降序
//return a.cmpareTo(b); //升序,
// flag = a.compareTo(b);
//if (flag>0) return 1; else if(flag == 0) return 0; else return -1; //升序
}
总结,假设序列中默认是升序排列(a<b),则对于c++中的cmp返回为1,或是真,大于0的值时,不进行元素位置交换;而在java中 compare 返回为真时,进行元素位置交换;