Java排序算法

Java排序算法一



前言

Java小白分享学习算法

一、冒泡排序

冒泡排序(Bubble Sort)就是把小的元素往前调或者把大的元素往后调从而实现从小到大的排序。
依次比较相邻的两个元素大小,若前一个元素大于后一个元素,则交换两个元素,每次比较一轮将最大的一个元素归位(即放到最后)。

import java.util.Arrays;

/*冒泡排序*/
public class example1 {
    public static void main(String[] args) {
        int[] bubbleNums = {25, 63, 78, 45, 132, 7};
        System.out.println("排序之前:" + Arrays.toString(bubbleNums));

        bubbleSort(bubbleNums);
        System.out.println("排序之后:" + Arrays.toString(bubbleNums));

    }
        public static void swap(int[]nums,int i){
            int temp=nums[i+1];
            nums[i+1]=nums[i];
            nums[i]=temp;
        }
        private static void bubbleSort(int[] nums){
            for(int i=1;i<nums.length;i++){
                for(int j=0;j<nums.length-i;j++) {
                    if (nums[j] > nums[j + 1])
                        swap(nums, j);
                }
            System.out.print("第" + i + "次排序:");
            System.out.println(Arrays.toString(nums));
        }
        }
    }

运行效果
运行效果

二、选择排序

选择排序(Selection Sort)是一种简单直观的排序算法。首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。

import java.util.Arrays;
/*选择排序*/
public class example2 {
    public static void main(String[] args) {
        int[] selectNums = {25, 63, 78, 45, 132, 7};
        System.out.println("排序之前:" + Arrays.toString(selectNums));

        selectSort(selectNums);
        System.out.println("排序之后:" + Arrays.toString(selectNums));

    }
    public static void swap(int[]nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
    public  static void selectSort(int[] nums){
        for(int i=0;i<nums.length-1;i++){
            int temp=i;
            for(int j=i+1;j<nums.length;j++){
                if(nums[j]<nums[temp])
                    swap(nums,j,temp);
            }
            System.out.println("第"+i+"次排序:"+Arrays.toString(nums));
        }
    }
}

运行效果
在这里插入图片描述

三、插入排序

插入排序(Insert Sort)就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。

import java.util.Arrays;

public class example3 {
    public static void main(String[] args) {
        int[] insertNums = {5, 3, 18, 15, 32, 7};
        System.out.println("排序之前:" + Arrays.toString(insertNums));

        insertSort(insertNums);
        System.out.println("排序之后:" + Arrays.toString(insertNums));

    }
    public static void insertSort(int[] nums){
        for(int i=1;i<nums.length;i++){
            int k=nums[i];
            int j=i-1;
            while(j>=0&&nums[j]>k){
                nums[j+1]=nums[j];
                j--;
            }
            nums[j+1]=k;
            System.out.println("第"+i+"次排序:"+Arrays.toString(nums));
        }
    }
}

运行效果
在这里插入图片描述

四、快速排序

快速排序(Quick Sort)的基本思想:通过一次排序将待排序元素分割成两个独立的部分,其中一部分元素都要比另一部分小,之后对两部分分别排序,最终得到一个有序数列。
算法描述:
1.从数列中选择一个元素作为“基准”,即分割数列
2.排列数列,将所有小于“基准”的元素全都放到左边,将大于“基准”的元素全部放到右边
3.将分割的部分分别递归的排序

import java.util.Arrays;


/*快速排序*/
public class example4 {
    public static void main(String[] args) {
        int[] quickNums = {25, 63, 18, 29, 26, 78, 45, 132, 7};
        System.out.println("排序之前:" + Arrays.toString(quickNums));

        quickSort(quickNums);
        System.out.println("排序之后:" + Arrays.toString(quickNums));

    }

    public static int position(int[] nums, int low, int high) {
        int i = low;
        int j = high;
        int x = nums[low];
        while (i < j) {
            while (nums[j] >= x && i < j) {
                j--;
            }
            if (i < j) {
                nums[i] = nums[j];
                i++;
            }
            while (nums[i] < x && i < j) {
                i++;
            }
            if (i < j) {
                nums[j] = nums[i];
                j--;
            }

        }
        nums[i] = x;
        return i;
    }

    public static void quickSort(int[] nums, int low, int high) {
        int k = 1;
        if (low < high) {
            int index = position(nums, low, high);
            quickSort(nums, low, index - 1);
            quickSort(nums, index + 1, high);
        }
    }
    public static void quickSort(int[] nums){
        int low=0;
        int high=nums.length-1;
        quickSort(nums,low,high);
    }
}

运行结果
在这里插入图片描述

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值