排序算法
独饮醉归人
咸鱼吐泡泡
展开
-
二维数组、对象数组、集合排序
二维数组排序 int a[][] ={{1,2},{4,3},{2,1},{2,-1}}; Arrays.sort(a,new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { //如果第一个数字相等,比价第二个 if(o1[0]-o2[0]==0) return o1[1]-o2[1]; return o1[0]-o2[0]; }原创 2021-04-25 22:40:08 · 119 阅读 · 0 评论 -
地精排序
地精排序思路:回溯例如:arr=1,3,5,2,41.首先进行遍历,建立标记i=0;当a[i]<a[i+1],如1<3,i++2.i=1,3<5,i++;3.5>2,进行交换,然后回溯i自减i–;时间复杂度O(n);static void gnome_sort(int[] arr) { int i = 0; while (i < arr.Length) {原创 2020-11-29 11:08:46 · 103 阅读 · 0 评论 -
排序(三)
桶排序先说一个简化的桶排序:你输入6个数字,这些数字在1—10之间,把他们从大到小排序可以建立0—11的数组,a[10],每出现一个数字X,a[x]++;相当于建立10个桶 ,把和下标相同的数字放入桶中但是有个缺点就是非常浪费空间import java.util.Scanner;/** * @author 落叶知秋 * 简化版本德桶排序。非常快,但是特别浪费空间 * 而且...原创 2020-05-03 19:06:00 · 141 阅读 · 0 评论 -
快速排序
最近做题,发现冒泡和选择排序的复杂度太大了,容易超时,于是就学习了快排****快排:简单地说就是找到一个基准数字m,数组中比m大的放在右边,比m小的放在左边,这样m的位置是正确的的。然后利用递归再分别对两边进行快排下面我逐步讲解一下快排的思路:1.假定对数组{6,1,7,5,3,11}进行快排2.首先在这个序列中找一个数作为基准数,为了方便可以取第一个数63.进行初步快排之后,变成{5,...原创 2020-04-25 04:21:35 · 122 阅读 · 0 评论 -
排序(一)
冒泡排序原理:如果是想从小到大排序,拿出数组两位数比较,小的放前,大的放后,如此反复的交换位置就可以得到排序的效果。package 测试代码;public class 冒泡排序 { public static void main(String[] args) { int []arr= {1,2,7,5,4}; for(int i=0,m=arr.length;i<m;i+...原创 2020-03-08 19:14:08 · 125 阅读 · 0 评论