常见排序算法—面试编程题2023

这篇具有很好参考价值的文章主要介绍了常见排序算法—面试编程题2023。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在看一些面试题,发现很多面试过程中都会要求手写排序编程题,经过一番查找整理,可以快速学习和使用相关排序算法题,通俗易懂,手撕代码吊打面试官。

一、冒泡排序

冒泡排序 是一种简单的排序算法,它重复地遍历待排序的数组,每次比较相邻的两个元素,如果顺序不对就交换它们。通过多次遍历,最终将待排序的数组按照从小到大或从大到小的顺序排列好。

冒泡排序的原理和过程
冒泡排序的原理很简单,每次比较相邻两个元素,如果前面的元素大于后面的元素,就交换它们。通过多次比较,最大(或最小)的元素会“浮”到数组的末尾,因此称为冒泡排序

用动态可视化图更好的去理解冒泡排序
常见排序算法—面试编程题2023,排序算法,面试,算法
java代码实现

 public class demo1 {

            public static void main(String[] args) {
                int[] a ={5,4,3,2,1};
                sort(a);
                for (int i = 0; i < a.length; i++) {
                    System.out.print(a[i]);
                }
            }
            //冒泡排序
            //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换
            //2.每一次比较都会产出一个最大或者最小的元素
            //3.下一轮少一次排序
            //4.依次循环,直到结束!
            public static  void sort(int[] array){
                //外层循环,判断程序要走多少次
                int temp;//临时变量
                for (int i = 0; i < array.length - 1; i++) {
                    //内层循环,比较两个数,如果第一个数比第二个数大,则交换
                    for (int j = 0; j < array.length-1-i; j++) {
                        if(array[j] > array[j+1]){
                            temp = array[j];
                            array[j] = array[j+1];
                            array[j+1] = temp;
                        }
                    }
                }
            }
    }

二、选择排序

1、 什么是选择排序?
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

2、选择排序原理是什么?
如下图,该图是选择排序的效果动图
常见排序算法—面试编程题2023,排序算法,面试,算法
java代码实现

class demo2 {
    public static void main(String[] args) {
        int[] arr = {26, 1, 80, 27, 133};
        int temp = 0;
        // for循环嵌套实现
        for (int j=0;j<arr.length-1;j++){
            for (int i=1+j;i<arr.length;i++){
                if(arr[i]<arr[j]){
                    temp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=temp;
                }
            }
        }
        //实现遍历
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.println(arr[x] + "]");
            } else {
                System.out.print(arr[x] + ",");
            }
        }
    }

}
//结果
//[1,26,27,80,133]

三、快速排序

快速排序,顾名思义,是一种速度快,效率高的排序算法。
常见排序算法—面试编程题2023,排序算法,面试,算法
java代码实现

class demo3 {

     public static void main(String[] args){
         int[] arr = {4,1,2,3,5,14,23,12,7,14};
         quickSort(arr,0,arr.length-1);
         System.out.println(Arrays.toString(arr));
     }
     public static void quickSort(int[] arr, int left, int right) {
         if(left >= right) {//终止条件,如果左边界下标等于有边界下标,或者大于右边界下标的时候,说明当前数组的长度已经是1乃至该数组物理上不存在了,因此就直接返回,终止递归,这里是递归出口。
             return ;
         }
         int i = left,j = right,base = arr[i];//根据传入的左右边界声明出两个游标,同时指定好基准数,我们命名为base
         while(i!=j) {//只要左右游标不相等,说明二者没有相遇,循环就会继续执行
             while(i<j && arr[j] >= base) {//j游标先行,只要j游标指向的数值大于基准数,j游标就开始游移,需要注意的是在j游标游移的过程中也会时刻注意到i和j游标是否相遇了,只要相遇就停止
                 j--;//j游标是往前走
             }
             while(i<j && arr[i] <= base) {//i游标后走,只要是i游标指向的数值小于基准数,i游标就开始游移,需要注意的是i游标在游移的过程中也会时刻注意到i和j游标是否相遇了,只要相遇就停止
                 i++;
             }
             int temp = arr[j];//在退出上边的外循环之后,说明二者均指向了需要被交换的元素,也就是说i指向了一个大于基准数的元素,j指向了一个小于基准数的元素,因此二者发生交换。如果此时两数不是因为这种指向情况而导致的交换,是由于相遇导致的交换,那么这个交换将没有意义
             arr[j] = arr[i];
             arr[i] = temp;
         }
         arr[left] = arr[i];//与基准数交换,此时我们已经找到了基准数的准确位置,我们将基准数与当前位置上的元素进行一次交换
         arr[i] = base;


         quickSort(arr, left, i-1);//递归的处理当前两个游标位置的右边无序数组
         quickSort(arr, i+1,right);//递归的处理当前两个游标位置的左边无序数组
     }

}

四、其它排序

其它排序详情点击传送门

如果对你有帮助,可以点个小心心 你的鼓励是我创作的动力!文章来源地址https://www.toymoban.com/news/detail-533247.html

到了这里,关于常见排序算法—面试编程题2023的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见排序宝典:帮助快速上手常见基础排序算法(下)

    目录 五、归并排序 1、算法步骤  2、动图演示​编辑  3、代码实现 六、堆排序 1、算法步骤 2、动图演示  3、代码实现 七、快速排序 1、基本思想 2、动图演示 3、代码实现  八、计数排序 1、算法步骤  2、动图演示 ​编辑 3、代码实现  归并排序(MERGE-SORT)是建立在归并操

    2024年04月13日
    浏览(34)
  • 常见排序算法之冒泡排序

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万!         冒泡排序,英文名Bubble Sort,是一种相对基础的 交换排序 方法。这种排序算法的名字来源于它操作的过程,可以类比为数列中的每一个元素都可以像小气泡一样

    2024年02月05日
    浏览(43)
  • 【数据结构】常见排序算法——常见排序介绍、选择排序(直接选择排序、堆排序)交换排序(冒泡排序)

      选择排序是一种简单但不高效的排序算法,其基本思想是从待排序的数据中选择最小(或最大)的元素放到已排序的数据末尾。具体操作步骤如下: (1)找到数据中最小的元素,并把它交换到第一个位置; (2)在剩下未排序的元素中找到最小的元素,并把它交换到已排

    2024年02月04日
    浏览(56)
  • 常见排序算法之插入排序类

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万!  插入排序,是一种简单直观的排序算法,工作原理是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数增1的有序表。在实现过程中,它使用双层循环,

    2024年02月04日
    浏览(34)
  • 排序算法终极篇之手撕常见排序算法

       文章目录 引入 一、插入排序 1、1 插入排序的实现思想 1、2 插入排序的代码实现及特点分析  二、希尔排序 2、1 希尔排序的实现思想 2、2 希尔排序的代码实现及特点分析  三、选择排序 3、1 选择排序的实现思想 3、2 选择排序的代码实现及特点分析 四、堆排序 五、冒泡

    2023年04月16日
    浏览(39)
  • 【算法篇C++实现】常见排序算法

    算法精炼 每趟从待排序的记录中选出最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。 简单排序处理流程 从待排序序列中,找到最小的元素; 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换; 从余下的 N - 1 个元素中

    2024年02月13日
    浏览(45)
  • Java常见算法_常见的查找算法和排序算法——简介及代码演示

            在本文中我将介绍Java中的常见算法,查找算法包括基本查找、二分查找、插值查找和分块查找。排序算法包括冒泡排序、选择排序、插入排序和快速排序 1.基本查找: 代码: 这是简单的基本查找,通过遍历数组来查看元素是否存在 运行结果: 基本查找小练习: 代

    2024年04月10日
    浏览(38)
  • 软考知识点——常见算法策略、设计模式、常见排序算法

    目录 一、常见算法策略 二、设计模式 1.设计模式分类 2.创建型设计模式应用场景 3.结构型设计模式应用场景  4.行为型设计模式应用场景 三、常见排序算法 算法名称 关键点 特征 典型问题 分治法 递归技术 把一个问题拆分成多个小模块的相同子问题,一般可用递归解决。

    2024年02月07日
    浏览(40)
  • 2023最常见200+Java面试题全分析:面试必背!(附答案)

    全文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM ,如下图所示: Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Ki

    2024年02月04日
    浏览(264)
  • 常见排序算法详解

    排序是我们在日常生活和工作中常见的一种操作。在计算机科学中,排序算法就是将一串或一组数据按照特定的顺序进行排列的算法。这些顺序可能是数字的升序或降序,也可能是字母或字词的字母顺序等。我们将探讨几种不同的排序算法,包括他们的原理、优缺点以及代码

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包