Java排序算法面试题(附答案)
2023-03-27 16:06:51
在java编程当我们进行数据处理时,我们经常会遇到需要数据处理的程序。在数据处理过程中,搜索数据是一种常规操作。当我们进行数据处理时,有序排列数据是提高效率的方法。此时java排序算法反映了它的作用。以下是一些常见的测试java排序算法面试问题,因为在面试java程序员工作的时候,会对的调查java排序算法,属于java基本范畴。
1、java初级排序算法有哪些?
答:java排序算法包括泡沫排序、选择排序、插入排序和希尔排序算法,这些都是java的初级排序算法。
2、java冒泡排序算法的步骤是什么?
答:步骤如下:(1)相邻元素。如果第一个比第二个大,交换两个;(2)从第0个到第n-1个数据做同样的工作。这个时候,最大的数字是“浮”在数组的最后位置;(3)除最后一步外,所有元素都重复上述步骤;(4)每次重复上述步骤的元素越来越少,直到没有一对数字需要比较。
3、选择排序的步骤是什么?
答:(1)在未排序序列中找到最小(大)元素,存储在排序序列的起始位置;
(2)然后继续从剩余的未排序元素中找到最小(大)元素,然后放在已排序序列的末尾;(3)以此类推,直到所有元素都排序完毕。
4、初级java排序算法的原理?
答:泡沫排序:反复访问要排序的数字列,一次比较两个元素。如果他们的顺序错了,交换它们。访问数字列的工作是重复,直到不需要交换,也就是说,数字列已经排序完成。该算法的名称来自于通过交换缓慢交换的较小元素“浮”到数列的顶部。
选择排序:在要排序的一组数中,选择最小数与第一位置的数交换;然后在剩余数中找到最小数与第二位置的数交换,以便循环到倒数第二和最后一个数进行比较。
插入排序:每步将要排序的记录插入前面已排序的单词序列的正确位置(从后到前找到正确位置),直到所有插入排序完成。
希尔排序:首先将整个待排序的记录序列分成几个子序列,直接插入排序,然后在整个序列中记录“基本有序”然后将所有记录依次直接插入排序。
5、实现希尔排序算法的代码?
System.out.print(n+",");
}
}
6、分析常见排序算法的稳定性是什么?
答:(1)泡沫排序:将小元素向前调整或向后调整大元素,比较两个相邻元素,交换也发生在两个元素之间。因此,如果两个元素相等,则不会交换;如果两个相等元素不相邻,即使两个相邻元素通过前两个交换,此时也不会交换,因此相同元素的前后顺序没有改变,因此泡沫排序是一种稳定的排序算法。
(2)选择排名:选择排名是为每个位置选择最小的当前元素,比如为第一个位置选择最小的,在剩余元素中为第二个元素选择第二个小元素,依次等待,直到第n - 一个元素,第n个元素不需要选择,因为它只剩下一个最大的元素。因此,选择排名不是一个稳定的排名算法。
(3)插入排序:插入排序是在一个有序的小序列的基础上,一次插入一个元素。当然,这个有序的小序列一开始只有一个元素,也就是第一个元素。比较从有序序列的末尾开始,即想要插入的元素与已经有序的最大元素相比,如果比它大,直接插入后面,否则向前找到它应该插入的位置。若遇到与插入元素相等的元素,则插入元素将要插入的元素放在相等元素后面。因此,相等元素的前后顺序没有改变,从原始无序序列中列出的顺序是排序后的顺序,因此插入排序是稳定的。
(4)基数排序:基数排序按低排序,然后收集;然后按高排序,然后收集;类比,直到最高。有时有些属性有优先级,先按低优先级排序,然后按高优先级排序,最后的顺序是高优先级高,高优先级相同的低优先级高。基数排序是基于单独的排序和单独的收集,因此它是一个稳定的排序算法。
7、在一个排列中,如果一对数的前后位置与大小顺序相反,即前数大于后数,则称为逆序数对。排列中的逆序总数称为排列中的逆序数。例如,{2、4、3、1}、2和1、4和3、4和1、3和1是逆序数对。因此,整个数组的逆序数对数为4。现在给定一个数组,要求统计数组的逆序数对数。
答:计算数列的逆序数对个数最简单的方便,就是从前到后依次统计每个数字是否能与其背后的数字形成逆序数对。代码如下:
#include
int main()
{
const int MAXN = 8;
int a[MAXN] = {1, 7, 2, 9, 6, 4, 5, 3};
int nCount = 0;
int i, j;
for (i = 0; i < MAXN; i++)
for (j = i + 1; j < MAXN; j++)
if (a[i] > a[j])
nCount++;
printf("逆序数对为: %d\n", nCount);
}
运行结果如下:
8、Java排序的基本概念是什么?
答:排名主要分为内部排名和外部排名两类,java的各种排序算法实际上是指内部排序算法。内部排序是基于内存的,整个排序过程是在内存中完成的,外部排序是指由于数据量太大,内存不能完全容纳,排序需要使用外存(通常计算数据移出内存的一部分,让另一部分未计算的数据进入内存)。
以上是今天为大家整理的。java排名算法面试问题的内容,事实上,java排名算法的知识肯定远不止这些,除了本文介绍的泡沫排名、选择排名、插入排名和希尔排名,还有堆排名、快速排名等算法排名,很常见八种java排序算法,希望大家多一些java培训课程仔细学习所有排序算法的原理,真正掌握使用java排序算法。