java排序有几种方法(java排序)
大家好,我是小科,我来为大家解答以上问题。java排序有几种方法,java排序很多人还不知道,现在让我们一起来看看吧!
1、/**
2、 * 冒泡排序
3、 * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
4、 * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
5、 * 针对所有的元素重复以上的步骤,除了最后一个。
6、 * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
7、 * @param numbers 需要排序的整型数组
8、 */
9、 public static void bubbleSort(int[] numbers)
10、 {
11、 int temp = 0;
12、 int size = numbers.length;
13、 for(int i = 0 ; i < size-1; i ++)
14、 {
15、 for(int j = 0 ;j < size-1-i ; j++)
16、 {
17、 if(numbers[j] > numbers[j+1]) //交换两数位置
18、 {
19、 temp = numbers[j];
20、 numbers[j] = numbers[j+1];
21、 numbers[j+1] = temp;
22、 }
23、 }
24、 }
25、 }
26、快速排序的基本思想:
27、 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。
28、/**
29、 * 查找出中轴(默认是最低位low)的在numbers数组排序后所在位置
30、 *
31、 * @param numbers 带查找数组
32、 * @param low 开始位置
33、 * @param high 结束位置
34、 * @return 中轴所在位置
35、 */
36、 public static int getMiddle(int[] numbers, int low,int high)
37、 {
38、 int temp = numbers[low]; //数组的第一个作为中轴
39、 while(low < high)
40、 {
41、 while(low < high && numbers[high] > temp)
42、 {
43、 high--;
44、 }
45、 numbers[low] = numbers[high];//比中轴小的记录移到低端
46、 while(low < high && numbers[low] < temp)
47、 {
48、 low++;
49、 }
50、 numbers[high] = numbers[low] ; //比中轴大的记录移到高端
51、 }
52、 numbers[low] = temp ; //中轴记录到尾
53、 return low ; // 返回中轴的位置
54、 }
55、 递归形式的分治排序算法:
56、 /**
57、 *
58、 * @param numbers 带排序数组
59、 * @param low 开始位置
60、 * @param high 结束位置
61、 */
62、 public static void quickSort(int[] numbers,int low,int high)
63、 {
64、 if(low < high)
65、 {
66、 int middle = getMiddle(numbers,low,high); //将numbers数组进行一分为二
67、 quickSort(numbers, low, middle-1); //对低字段表进行递归排序
68、 quickSort(numbers, middle+1, high); //对高字段表进行递归排序
69、 }
70、 }
本文到此讲解完毕了,希望对大家有帮助。