Java——排序算法


  1. 冒泡排序
  2. 快速排序
  3. 直接选择排序

 

以这张百度百科上的图片进行说明

这张图片是百度百科上找的

假设我们定义一个数组

int[] a = {7,3,11,2,6,13,8};

一、冒泡排序:

遍历数组,找出当前最大的数放到数组的最末位
第N次循环找出数组的第N大的数,放到数组的倒数第N个单元

这里写图片描述

public static void BubbleSort(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            //内层循环控制对数组的遍历
            for (int j = 0; j < a.length - i - 1; j++) {
                //判断当前单元的值是否比后一个单元大
                if (a[j] > a[j + 1]) {
                    int temp = a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;
                }
            }
        }
    }//BubbleSort

二、快速排序

这里写图片描述

    int[] a = new int[20];
    public void quicksort(int left, int right)
    {
        int i, j, t, temp;
        if(left > right)
           return;
        temp = a[left]; //temp中存的就是基准数
        i = left;
        j = right;
        while(i != j)
        {
        //顺序很重要,要先从右边开始找
        while(a[j] >= temp && i < j)
            j--;
            //再找右边的
            while(a[i] <= temp && i < j)
                i++;
            //交换两个数在数组中的位置
            if(i < j){
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
        //最终将基准数归位
        a[left] = a[i];
        a[i] = temp;
        quicksort(left, i-1);//继续处理左边的,这里是一个递归的过程
        quicksort(i+1, right);//继续处理右边的 ,这里是一个递归的过程
    }// quicksort

三、直接选择排序

这里写图片描述

public static void selectSort(int[] a) {
        int minIndex = 0;
        int temp = 0;
        if ((a == null) || (a.length == 0))
            return;
        for (int i = 0; i < a.length - 1; i++) {
            minIndex = i;// 无序区的最小数据数组下标
            for (int j = i + 1; j < a.length; j++) {
                // 在无序区中找到最小数据并保存其数组下标
                if (a[j] < a[minIndex]) {
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                // 如果不是无序区的最小值位置不是默认的第一个数据,则交换之。
                temp = a[i];
                a[i] = a[minIndex];
                a[minIndex] = temp;
            }
} // selectSort

声明:May丶乘剑的部落小阁|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Java——排序算法


一个偶尔努力、偶尔懈怠的"搬砖"人