生活常识

当前位置/ 首页/ 生活常识/ 正文

java排序有几种方法(java排序)

导读 大家好,我是小科,我来为大家解答以上问题。java排序有几种方法,java排序很多人还不知道,现在让我们一起来看看吧!1、/**2、     *...

大家好,我是小科,我来为大家解答以上问题。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、    }

本文到此讲解完毕了,希望对大家有帮助。