首页 > 其他分享 >【排序】基本排序的介绍

【排序】基本排序的介绍

时间:2023-03-02 14:57:42浏览次数:39  
标签:基本 sort arr 基准值 int number 介绍 排序 public

冒泡和插入排序和快排

这三种排序感觉比较常见面试也容易问到

1、冒泡排序

简单的来说就是将大的数和前面的数比较,交换,一直冒泡到最上方,然后下一次冒泡忽略这个上次的最大值就好了。

代码如下:

package sort;


public class bubble_sort {
    public void bubble_sort(int[] number) {
        for (int i = 0; i < number.length; i++) {
            for (int j = 0; j < number.length - i - 1; j++) {
                if(number[j] > number[j+1]) {
                    int temp = number[j];
                    number[j] = number[j+1];
                    number[j+1] = temp;
                }
            }
        }
    }


    public static void main(String[] args) {
        bubble_sort sort = new bubble_sort();
        int[] a = {3,2,1,4,5};
        sort.bubble_sort(a);
        for(int i : a) {
            System.out.print(i + " ");
        }
    }
}

2、插入排序

插入排序顾名思义就是找到每一个数字需要插入的地方,保证这个数字插入完后前面的都是有序的就好了,那实现思路将每个数左边的数遍历过去,腾出位置给这个数插入就好了。

package sort;


public class Insert_sort {
    public void insertSort(int[] arr) {
        int i,j;
        for(i = 1; i < arr.length; i++) {
            int temp = arr[i];
            for(j = i - 1; j >= 0; j--) { //这个数前面的数,注意要从后往前,不然前面的往后挪就覆盖了,从后开始往后挪没事有temp呢
                if(temp < arr[j]) {
                    arr[j + 1] = arr[j];
                } else {
                    break;
                }
            }
            arr[j + 1] = temp;
        }
    }


    public static void main(String[] args) {
        Insert_sort insert_sort = new Insert_sort();
        int[] arr = {3, 2, 1, 4, 5};
        insert_sort.insertSort(arr);
        for(int i : arr) {
            System.out.print(i + " ");
        }
    }
}

3、快排

说实话,复习了很多次,但是呢不做笔记总忘记,思路相信还是一直记得住的,就是一次循环做到数组左边的数都小于基准值,数组右边的数大于基准值。

假如说,以数组第一个值为基准值,实现思路就是右边依次找比基准值小的,找到暂停,左边依次找比基准值大的,找到暂停,然后交换值就好了,如果两边没有相遇就继续找,继续交换,直到相遇i = j。 为什么从右边开始找,因为基准值在左边。

然后通过递归把左边的子数组和右边的子数组都放进去就好了,能够实现所有的都是左边小右边大,即有序了。

package sort;


import java.lang.reflect.Array;


public class Qucik_sort {
    public void qucick_sort(int []arr, int low, int high) {
        int i = low,j = high,flag; // i 左边的,j右边的,flag为基准值
        if(low >= high) {
            return;
        }
        flag = arr[low];
        while(i < j) {
            while (flag <= arr[j] && i < j) {
                j--;
            }
            while (flag >= arr[i] && i < j) {
                i++;
            }
            if(i < j) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        arr[low] = arr[i]; //将基准值放到应该去的中间位置
        arr[i] = flag;
        qucick_sort(arr,low,j - 1); //这里用i也是一样的
        qucick_sort(arr,j + 1, high);
    }


    public static void main(String[] args) {
        Qucik_sort qucik_sort = new Qucik_sort();
        int[] arr = {3, 2, 1, 4, 5};
        qucik_sort.qucick_sort(arr,0,4);
        for(int i : arr) {
            System.out.print(i + " ");
        }
    }
}

标签:基本,sort,arr,基准值,int,number,介绍,排序,public
From: https://www.cnblogs.com/wcyblogs/p/17171747.html

相关文章

  • Memcached集群实现及原理介绍
    一、Memcached集群介绍1.自身通过算法保证数据唯一性2.集群形式对用户和Memcached都是透明的3.Memcached的集群是通过客户端实现的4.Memcached服务端相互不认识二、代码实现......
  • 腾讯云从业者认证4-云加速CDN产品介绍
    1.CDN加速基础知识内容分发网络内容分发网络(ContentDeliveryNetwork,CDN)通过高性能加速节点提前就近缓存业务内容,实现快速响应,降低用户访问延迟,提升可用性。CDN......
  • 软件开发基本要求
    模块化将程序中的所有功能划分为一个一个相互独立不可分割的功能部件。其中模块内的功能特定又集中,具有着内聚的特性。而模块间则基本独立无关,但也可能存在着少量的依赖......
  • kotlin基本数据类型
    通过idea创建kotlin项目:创建kotlin文件packagecom.czhappy.chapter01varaBoolean:Boolean=truevaranInt:Int=9varanotherInt:Int=0xFFvarmaxInt:Int=Int.MAX......
  • element table 修改排序图标 保留原有排序功能
      使用 render-header修改图标,官方文档有说明在 el-table-column添加属性 :render-header="renderHeader"<el-table-columnprop="viewsNumber"sortable:r......
  • Stream.Read 与 Stream.Write 介绍
    Stream.Read 与 Stream.Write 这两个方法都是三个参数:byte[] buffer,int offset,int count。但是这个offset到底是指Stream的还是buffer的呢?count到底是指......
  • 冒泡排序
    点击查看代码publicstaticvoidmain(String[]args){int[]arr={9,4,3,7,8,2};inttemp;//从小到大排序,每次把最小的移到最......
  • java中listmap根据map某一字段排序公共方法
    /***List<Map>根据map字段排序**@paramlist*@paramfeild排序字段*@paramsortTyp排序方式desc-倒序asc-正序*@return......
  • JavaScript的Dom基本操作
    获取元素的方式:根据id名称获取   document.getElementById("id名称")根据元素类名获取    document.getElementsClassName("元素类名")根据元素标......
  • Git介绍下载安装以及基本使用
    目录一、git介绍二、下载安装git软件三、基本使用四、制作忽略文件五、Git、Gitee、GitHub、Gitlab、bitbucket的区别六、基础代码操作分类一、git介绍git代码管理软件,和......