什么应届毕业生关于排序算法面试时候就准备这?

这篇博客是应届毕业生面试准备的基础排序算法指南,包括冒泡排序、选择排序、插入排序、希尔排序和快速排序的原理和实现。通过简单的代码示例,帮助面试者清晰理解每种算法的工作机制。
摘要由CSDN通过智能技术生成

应届毕业生面试必备之基本排序算法(原创)

这是博主的第一篇博客,记录一下自己面试过程中如何去回答基础的排算法的知识点的.
对于的排序算法,我们初级程序员(20届应届生),面试中小公司,能说上这5个排序算法,基本就是合格以上水准了

  1. 冒泡排序
    这是初学软件行业的大一新生必会的,可手撸的排序算法 , 比较简单. 面试时候,只用简单说一说通过两次for循环, 比较相邻元素 ,进行位置交换即可.废话不多说上代码解析 :

/**
* 冒泡排序
*
* @param array
* @return
*/
//传个未排序数组,
public static int[] bubbleSort(int[] array) {
if (array.length == 0) {//健壮性判断
return array;}
int temp ;
for (int i = 0; i < array.length; i++)
for (int j = 0; j < array.length - 1 - i; j++)
if (array[j + 1] < array[j]) { //相邻元素比较大小
temp = array[j + 1]; //两两交换
array[j + 1] = array[j];
array[j] = temp;
}
return array; //返回排好序数组
}

  1. 选择排序
    选择排序,面试时候,你只用说"也是通过两层for循环,…通过找到最值,放到起始位置,然后类推找一个,放一个在后面",大概就这意思,用自己白话解释,就可, 上代码
    /**
    • 选择排序
    • @param array
    • @return
      */
      public static int[] selectionSort(int[] array) {
      if (array.length == 0){
      return array;}
      int temp;
      int minIndex;
      for (int i = 0; i < array.length; i++) {
      minIndex = i;
      for (int j = i; j < array.length; j++) {
      if (array[j] < array[minIndex]) //找到最小的数
      minIndex = j; //将最小数的索引保存
      }
      //把查到的最小的给到了第一个i=0索引,依次下去
      temp = array[minIndex];
      array[minIndex] = array[i];
      array[i] = temp;
      }
      return array;
      }
  2. 插入排序
    上面两个,和面试官,随便说说就好,插入排序稍微麻烦点点吧,可能也是因为我是一个比较菜的应届生 = =,用白话来说:“插入排序就跟打扑克牌一样,for循环取牌 ,在通过while循环来比较进行插排, 刚开始还好,比较的不多,但是取牌取多了之后,他进行比较的次数也变多了”,就这白话一说,面试官就知道你明白了这个插入排序的意思,上代码
    /**
    • 插入排序
    • @param array
    • @return
      */
      public static void insertSort(int[] array) {
      int index = 0;
      int current = 0;
      for (int i = 1; i < array.length; i++) {
      index = i - 1; //左边是排好序的
      current = array[i]; //当前取到的扑克牌
      while (index >= 0 && array[index] > current) {
      //如果左边的排的比取到的排的大
      array[index + 1] = array[index];
      index–;
      }
      array[index + 1] = current;
      }
      }
      4.希尔排序
      应届生面试 白话就这么说:“希尔排序也是插入排序的一种, 插入排序的升级版,它是一种缩小增量的排序方式,按照一定增量分组,进行插入排序,当增量为1的时候,就只有一组,排完,顺序就排好了”,上代码让你看清清,上代码前给大家分享一组B站关于排序理解的可视化贼好的一组视频<舞动的排序>https://space.bilibili.com/34739903/

/**
* 希尔排序
*
* @param array
* @return
*/
public static int[] ShellSort(int[] array) {
int len = array.length;
int temp;
int gap = len / 2; //分两组
while (gap > 0) {
for (int i = gap; i < len; i++) {
temp = array[i]; //依次拿到gap后面索引元素
int preIndex = i - gap; //依次拿到gap前面索引
while (preIndex >= 0 && array[preIndex] > temp) {//分两组,相当于间隔比较大小,交换位置
array[preIndex + gap] = array[preIndex];
preIndex -= gap;
}
array[preIndex + gap] = temp;
}
gap /= 2; //直到gap = 0,跳出循环
}
return array;
}

  1. 快速排序
    你可以这么和面试官说:“分而治之的思想, 把一个序列分为较大和较小两个子序列,然后递归的去排序这两个子序列” 视频链接帮助你理解https://www.bilibili.com/video/BV1xW411Y7g3

步骤1:从数列中挑出一个元素,称为 “基准”(pivot );
步骤2:重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

步骤3:递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值