Java 算法

Java 算法

排序算法

  1. 冒泡排序
    在这里插入图片描述
/**
 1. 冒泡排序
 2. 前后两个元素相比较,最大的往后排,每一轮都可以找到一个最大的元素
*/
public static int[] bubbleSort(int[] nums) {
    int temp = 0;
    for(int i=0 ;i < nums.length - 1 ;i++){
        for(int j = 0 ; j < nums.length - 1 - i ; j++){
            if(nums[j] > nums[j+1]) {
                temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
            }
        }
    }
    return nums;
}
//解释:数组索引j位置与j+1位置比较,将大的值赋予j+1,小的值赋予j,一次循环下来,数组最大值将排到最后
  1. 选择排序
    在这里插入图片描述
/*
 1. 选择排序
 2. 从后往前排,设默认最小元素与较大位置比较,如果比最小元素大,
 3. 则将该位置记为最小元素,并且循环比较最小元素,找到最小元素,
 4. 最后将最小元素赋值最前方,
*/
public static void selectSort(int[] nums) {  
     int size = nums.length, 
     int temp;
     for (int i = 0; i < size; i++) {  
         int k = i; //临时最小元素位数
         for (int j = size - 1; j >i; j--)  {  
             if (nums[j] < nums[k])  k = j;  
         }  
         temp = nums[i];  
         nums[i] = nums[k];  
         nums[k] = temp;  
     }  
} 
  1. 插入排序
    在这里插入图片描述
/*
 1. 插入排序
 2. 基准元素相邻元素比较,较大的往后排,然后从较大的位置开始往后与基准元素比较排列,
 3. 最后把最小的插入较小位
插入排序,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
*/
public static void insertSort(int[] nums) {
    int size = nums.length;
    int temp;
    int j;
    for (int i = 1; i < size; i++) {
        temp = nums[i];//基准元素
        for (j = i; j > 0 && temp < nums[j - 1]; j--)
            nums[j] = nums[j - 1];
        nums[j] = temp;
    }
}
  1. 快速排序
/*
* 快速排序
* 取第一个元素为基数,循环比较最小位置值与最大位置值,较大的往后排,较小的往前排,
* 然后并较小的位数加一,较大的位数减一,循环结果就是中间位数,
* 最后就是以中间两部分分开做递归运算再次比较排列,直到正确排序为止
*/
public static void quickSort(int[] nums, int low, int high) {
    if (low < high) {
        int temp = nums[low]; // 选定的基准值(第一个数值作为基准值)
        int middle; // 记录临时中间值
        int i = low, j = high;
        do {
            while ((nums[i] < temp)&& (i < high))
                i++;
            while ((nums[j] > temp)&& (j > low))
                j--;
            if (i <= j) {
                middle= nums[i];
                nums[i]= nums[j];
                nums[j]= middle;
                i++;
                j--;
            }
        } while (i <= j);
        if (low < j)
            quickSort(nums,low, j);
        if (high > i)
            quickSort(nums,i, high);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值