排序
Java排序
珍珠奶茶少冰半糖
这个作者很懒,什么都没留下…
展开
-
Java归并排序
归并排序采用的是分治(divide-and-conquer)法思想。基本思想:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。 //分+合方法 public static void mergeSort(int[] arr, int left, int right, int[] temp) { if(left < right) { int mid = (left + right) /原创 2020-11-20 17:54:52 · 106 阅读 · 0 评论 -
Java基数排序
**基数排序(radix sort)**属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。public static void sort(int[] number){ //得到数组原创 2020-11-20 17:53:40 · 102 阅读 · 0 评论 -
Java快速排序
**快速排序(Quick Sort)**的每一轮处理其实就是将这一轮的基准数归位,直到所有的数都归位为止,排序就结束了 public static int[] qsort(int arr[],int start,int end) { //在这个序列中随便找一个数作为基准数(就是一个用来参照的数),此处以第一个数为基准 int pivot = arr[start]; int i = start; int j = end; //为原创 2020-11-20 17:52:20 · 100 阅读 · 0 评论 -
Java希尔排序
**希尔排序(Shell’s Sort)**是插入排序的一种,是直接插入排序算法的一种更高版本的改进版本。把记录按步长gap分组,对每组记录采用直接插入排序方法进行排序;随着步长逐渐减小,所分成的组包含的记录越来越多;当步长值减小到1时,整个数据合成一组,构成一组有序记录,完成排序;//对交换式的希尔排序进行优化->移位法 public static void sort(int[] arr) { // 增量gap, 并逐步的缩小增量 for (int原创 2020-11-20 17:51:00 · 88 阅读 · 0 评论 -
Java插入排序
插入排序(Insert Sort)基本思想:把n个待排序的元素看成一个有序列表和无序列表,开始的有序列表只有一个元素,无序列表中含有n-1个元素,排序过程中每次从无序列表中取出第一个元素,将其与有序表中的元素从后往前逐个比较,并插入到合适的位置,完成排序。代码实现private static void sort(int[] arr){ int insertVal = 0; //待插入元素的值 int insertIndex = 0; //待插入元素要插入的坐标原创 2020-11-13 17:15:03 · 54 阅读 · 0 评论 -
Java选择排序
选择排序(Select Sort)基本思想:也是简单排序,第一次从arr[0]–arr[n-1]中选出最小的值与arr[0]交换,第二次从arr[1]–arr[n-1]中选出最小元素与arr[1]交换,第i次从arr[i-1]–arr[n-i]中选出最小元素与arr[i-1]交换,通过n-1次获得有序序列。代码实现//选择排序时间复杂度是 O(n^2) private static void sort(int[] arr){ for (int i = 0; i < arr.原创 2020-11-13 17:09:08 · 73 阅读 · 0 评论 -
Java冒泡排序
冒泡排序(Bubble Sort)基本思想:对待排序的序列从前往后,依次比较相邻的元素的值,若发现逆序则交换。冒泡排序优化:排序过程中,各个元素不断接近有序的位置,如果一趟交换下来没有进行过交换,说明已经有序。可以在排序过程中添加一个flag判断元素是否进行过交换。代码实现//冒泡排序 每次选出最大的元素 时间复杂度O(n^2)public static int[] sort(int[] arr){//创建临时变量int temp;for (int i = 0; i < arr.len原创 2020-11-13 16:57:09 · 60 阅读 · 0 评论