排序
HinataHazuki
风停泪止,雨过天晴
展开
-
排序-归并
原理:先分解再合并,将数组进行拆分,当合并的时候比较两数组中数的大小进行合并基本代码参照自http://blog.csdn.net/apei830/article/details/6591632//归并排序 public static void MergeSort(int[]a,int left,int right){ //主函数带入时right为length - 1 if(le原创 2017-09-04 22:14:19 · 218 阅读 · 0 评论 -
排序-简单选择
原理:每次从数组中选出最小的放到前面,从而排序整个数组 //简单选择排序 public static int[] SelectionSort(int[]a){ //后面j=i+1且留到最后的数一定是最大值 for(int i=0;i<a.length-1;i++){ int tmp = 0; int index = i; for(int j=i+1;j<a.leng原创 2017-09-04 21:33:51 · 219 阅读 · 0 评论 -
排序-快速
原理:开头结尾两指针,通过对一基准值的比较进行反复交换,两指针向中心移动直到相交,此时左边全是小于基准值的数,右边都是大于基准值的数,之后分治法再对前面和后面的两数组进行同样的排序。基本代码借鉴http://www.cnblogs.com/coderising/p/5708801.html,感觉这篇文章的代码写的很不错。//快速排序 public static void QuickSor原创 2017-09-04 21:13:49 · 228 阅读 · 0 评论 -
排序-希尔
原理:不停拆分,对各个小子序列进行直接插入排序再更换步长继续排序,等基本有序后再进行一次直接插入排序。public static int[] ShellSort(int[]a){ int k; for(int i=a.length/2;i>0;i/=2){ //i为步长 for(int j=i;j<a.length;j++){ //j为后半段 int tmp原创 2017-09-04 17:39:13 · 235 阅读 · 0 评论 -
排序-直接插入
原理:将数据放到已经排好序的数组最后面,然后一个一个与前面的比较,大于该数的往后移,发现小于则代表可插入到该数的后面。 public static int[] InsertSort(int [] a){ for(int i=1;i<a.length;i++){ int j; int tmp = a[i]; for( j=i-1;j>=0;j--){ if(a[j]>t原创 2017-09-04 13:52:33 · 261 阅读 · 0 评论 -
排序-冒泡
int a[] = {};int temp=0; for(int i=0;i<a.length-1;i++){ for(int j=0;j<a.length-1-i;j++){ if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j...原创 2017-08-30 15:04:24 · 241 阅读 · 0 评论