Java 七种排序算法以及实现

最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习

萌新一枚学习 Java 没多久,以下仅供参考。如有错误希望大佬指正,欢迎大家在评论区交流探讨。

1.冒泡排序

  • 通过待排序的序列从前往后依次比较相邻的元素,若发现逆序则两两交换,直到下一趟排序下来没有进行交换,说明排序完成

  • 冒泡排序每一趟会确定一个最大值(默认从小到大)

import java.util.Arrays;
public class BubbleSort {
      public static void main(String[] args) {
          int array[] = {10,9,2,-3,6,8,1,-6,-5,4};        for (int i = 0; i < array.length ; i++) { //循环每一趟排序            for (int j = 0; j < array.length-1-i ; j++) {
  // 每一趟排序的数据交换// 由于array[j]是和array[j+1]比较,防止数据越界这里array.length要减一                int temp = 0;                if (array[j]>array[j+1]){
                      temp = array[j+1];                    array[j+1] = array[j];                    array[j] = temp;                }            }        }//  两种方法输出//  1.格式化输出,需import,之后的代码演示全用格式化输出        System.out.println(Arrays.toString(array));//  2.for循环输出        for (int i = 0; i < array.length ; i++) {
              System.out.print(array[i]+" ");        }
    }}

复制代码

2.选择排序

  • 第一趟排序是从 array[0]到 array[array.length-1]找到一个最小值 array[n]与 array[0]进行交换,第一趟排序是从 array[1]到 array[array.length-1]找到一个最小值 array[n]与 array[1]进行交换,直到排序完成

  • 选择排序每一趟排序会确定一个最小值(默认从小到大)

  • 以下是三种不同的代码实现

import java.util.Arrays;
public class SelectSortDemo01 {
      public static void main(String[] args) {
          int array[] = {10,9,2,-3,6,8,1,-6,-5,4};        for (int i = 0; i < array.length-1 ; i++) {
              for (int j = 1+i; j < array.length; j++) {
  //  此算法与冒泡排序的算法类似,只不过冒泡算法的每一趟排序是两两比较,这个是第一个数与每一个数比较                int temp = 0;                if (array[i] > array[j]){
                      temp = array[j];                    array[j] = array[i];                    array[i] = temp;                }            }        }        System.out.println(Arrays.toString(array));    }}import java.util.Arrays;
public class SelectSortDemo02 {
      public static void main(String[] args) {
          int array[] = {10,9,2,-3,6,8,1,-6,-5,4};        int temp = 0;        for (int j = 0; j <array.length-1 ; j++) {
              for (int i = 1; (i+j)< array.length ; i++) {
  //此算法与上面一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值