「java内部如何实现排序」java内部如何实现排序方式
今天给各位分享java内部如何实现排序的知识,其中也会对java内部如何实现排序方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java 如何实现数组排序并输出每个数字原来的索引
java变成对数组进行排序可以使用ArraySort方法,保存源数组下标值可以存入map中,如下代码:
import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List; public class ceshi { public static void main(String[] args) { int n = 5; int[] a = { 8, 5, 4, 6, 2, 1, 7, 9, 3 }; HashMap map = new HashMap(); for (int i = 0; i a.length; i++) { map.put(a[i], i); // 将值和下标存入Map } // 排列 List list = new ArrayList(); Arrays.sort(a); // 升序排列 for (int i = 0; i a.length; i++) { list.add(a[i]); } for (Object object : list) { System.out.print(object + ","); } System.out.println(); // 查找原始下标 for (int i = 0; i n; i++) { System.out.print(map.get(a[i]) + ","); } } }
运行结果如下:
如何用java实现快速排序,简答讲解下原理
快速排序思想:
通过对数据元素集合Rn 进行一趟排序划分出独立的两个部分。其中一个部分的关键字比另一部分的关键字小。然后再分别对两个部分的关键字进行一趟排序,直到独立的元素只有一个,此时整个元素集合有序。
快速排序的过程,对一个元素集合R[ low ... high ] ,首先取一个数(一般是R[low] )做参照 , 以R[low]为基准重新排列所有的元素。
所有比R[low]小的放前面,所有比R[low] 大的放后面,然后以R[low]为分界,对R[low ... high] 划分为两个子集和,再做划分。直到low = high 。
比如:对R={37, 40, 38, 42, 461, 5, 7, 9, 12}进行一趟快速排序的过程如下(注:下面描述的内容中元素下表从 0 开始):
开始选取基准 base = 37,初始位置下表 low = 0 , high = 8 , 从high=8,开始如果R[8] base , 将high位置中的内容写入到R[low]中, 将high位置空出来, low = low +1 ;
从low开始探测,由于low=1 , R[low] base ,所以将R[low]写入到R[high] , high = high -1 ;
检测到low high ,所以第一趟快速排序仍需继续:
此时low=1,high=7,因为 R[high] base ,所以将 R[high] 写入到到R[low]中,low = low + 1;
从low开始探测,low = 2 , R[low] base ,所以讲R[low]写入到R[high],high=high-1;
继续检测到 low 小于high
此时low=2,high=6,同理R[high] base ,将R[high] 写入到R[low]中,low=low+1;
从low继续探测,low = 3 , high=6 , R[low] base , 将R[low]写入到R[high]中,high = high-1;
继续探测到low小于high
此时low=3,high=5,同理R[high] base,将R[high]写入到R[low]中,low = low +1;
从low继续探测,low = 4,high=5,由于R[low] base , 将R[low]写入到R[high]中,high = high -1 ;
此时探测到low == high == 4 ;该位置即是base所在的位置,将base写入到该位置中.
然后再对子序列Rs1 = {12,9,7,5} 和 Rs2={461,42,38,40}做一趟快速排序,直到Rsi中只有一个元素,或没有元素。
快速排序的Java实现:
private static boolean isEmpty(int[] n) {
return n == null || n.length == 0;
}
// ///////////////////////////////////////////////////
/**
* 快速排序算法思想——挖坑填数方法:
*
* @param n 待排序的数组
*/
public static void quickSort(int[] n) {
if (isEmpty(n))
return;
quickSort(n, 0, n.length - 1);
}
public static void quickSort(int[] n, int l, int h) {
if (isEmpty(n))
return;
if (l h) {
int pivot = partion(n, l, h);
quickSort(n, l, pivot - 1);
quickSort(n, pivot + 1, h);
}
}
private static int partion(int[] n, int start, int end) {
int tmp = n
今天给各位分享java内部如何实现排序的知识,其中也会对java内部如何实现排序方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
;while (start end) {
while (n
java内部如何实现排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java内部如何实现排序方式、java内部如何实现排序的信息别忘了在本站进行查找喔。
= tmp start end)end--;
if (start end) {
n[start++] = n
java内部如何实现排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java内部如何实现排序方式、java内部如何实现排序的信息别忘了在本站进行查找喔。
;}
while (n
今天给各位分享java内部如何实现排序的知识,其中也会对java内部如何实现排序方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
tmp start end)start++;
if (start end) {
n[end--] = n
今天给各位分享java内部如何实现排序的知识,其中也会对java内部如何实现排序方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
;}
}
n
今天给各位分享java内部如何实现排序的知识,其中也会对java内部如何实现排序方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
= tmp;return start;
}
在代码中有这样一个函数:
public static void quickSortSwap(int[] n, int l, int h)
该函数可以实现,元素集合中特定的 l 到 h 位置间的数据元素进行排序。
Java通过几种经典的算法来实现数组排序
JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。
快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。
冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。
选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。
插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。
1利用Arrays带有的排序方法快速排序
public class Test2{ public static void main(String[] args){ int[] a={5,4,2,4,9,1}; Arrays.sort(a); //进行排序 for(int i: a){ System.out.print(i); } } }
2冒泡排序算法
public static int[] bubbleSort(int[] args){//冒泡排序算法 for(int i=0;iargs.length-1;i++){ for(int j=i+1;jargs.length;j++){ if (args[i]args[j]){ int temp=args[i]; args[i]=args[j]; args[j]=temp; } } } return args; }
3选择排序算法
public static int[] selectSort(int[] args){//选择排序算法 for (int i=0;iargs.length-1 ;i++ ){ int min=i; for (int j=i+1;jargs.length ;j++ ){ if (args[min]args[j]){ min=j; } } if (min!=i){ int temp=args[i]; args[i]=args[min]; args[min]=temp; } } return args; }
4插入排序算法
public static int[] insertSort(int[] args){//插入排序算法 for(int i=1;iargs.length;i++){ for(int j=i;j0;j--){ if (args[j]args[j-1]){ int temp=args[j-1]; args[j-1]=args[j]; args[j]=temp; }else break; } } return args; }
java内部如何实现排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java内部如何实现排序方式、java内部如何实现排序的信息别忘了在本站进行查找喔。
发布于:2022-12-13,除非注明,否则均为
原创文章,转载请注明出处。