「java岗位算法题」java面试常见算法题

博主:adminadmin 2023-01-09 08:06:05 1070

本篇文章给大家谈谈java岗位算法题,以及java面试常见算法题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java题目,算法题

//闲的无聊瞎玩玩

public class Demo1 {

public static void main(String[] args) throws Exception {

int[] arr = { 1, 2, 3, 4, 5 };//代表五个人的编号

System.out.println("a厂\t:\tb厂\t:\tc厂");

for (int s = 0; s 3; s++) {

for (int i = 0; i arr.length; i++) {

for (int j = 0; j arr.length; j++) {

for (int k = 0; k arr.length; k++) {

for (int l = 0; l arr.length; l++) {

for (int m = 0; m arr.length; m++) {

if (i != j i != k i != l i != m

j != k j != l j != m k != l

k != m l != m) {

if (s==0) {

System.out.println(arr[i] + "\t:\t" + arr[j]

+ "\t:\t" + arr[k] + "," + arr[l] + ","

+ arr[m]);

}else if (s==1) {

System.out.println(arr[i] + "\t:\t" + arr[j]

+ "," + arr[k] + "\t:\t" + arr[l] + ","

+ arr[m]);

}else if (s==2) {

System.out.println(arr[i] + "\t:\t" + arr[j]

+ "," + arr[k] + "," + arr[l] + "\t:\t"

+ arr[m]);

}

}

}

}

}

}

}

}

}

}

java算法面试题

三个for循环,第一个和第二个有啥区别?去掉一个吧

可以用迭代器remove方法,在移除的同时添加。

不知道是你记错了还是题本身就这样,我只想说:

写这代码的是二货么?

1、每个循环的索引都是从0开始,这是什么遍历方式?

2、看这题的目的是想把用户添加到相应的组里,这我就不明白了,新建一个用户的时候就没分配组么?那用户的GroupId哪来的?

3、这是一个dao操作,难道就不会根据GroupId直接查出用户或者组么?

这哪是优化代码?分明是挖坑。

java算法面试题:排序都有哪几种方法

一、冒泡排序

[java] view plain copy

package sort.bubble;

import java.util.Random;

/**

* 依次比较相邻的两个数,将小数放在前面,大数放在后面

* 冒泡排序,具有稳定性

* 时间复杂度为O(n^2)

* 不及堆排序,快速排序O(nlogn,底数为2)

* @author liangge

*

*/

public class Main {

public static void main(String[] args) {

Random ran = new Random();

int[] sort = new int[10];

for(int i = 0 ; i 10 ; i++){

sort[i] = ran.nextInt(50);

}

System.out.print("排序前的数组为");

for(int i : sort){

System.out.print(i+" ");

}

buddleSort(sort);

System.out.println();

System.out.print("排序后的数组为");

for(int i : sort){

System.out.print(i+" ");

}

}

/**

* 冒泡排序

* @param sort

*/

private static void buddleSort(int[] sort){

for(int i=1;isort.length;i++){

for(int j=0;jsort.length-i;j++){

if(sort[j]sort[j+1]){

int temp = sort[j+1];

sort[j+1] = sort[j];

sort[j] = temp;

}

}

}

}

}

二、选择排序

[java] view plain copy

package sort.select;

import java.util.Random;

/**

* 选择排序

* 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,

* 顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

* 选择排序是不稳定的排序方法。

* @author liangge

*

*/

public class Main {

public static void main(String[] args) {

Random ran = new Random();

int[] sort = new int[10];

for (int i = 0; i 10; i++) {

sort[i] = ran.nextInt(50);

}

System.out.print("排序前的数组为");

for (int i : sort) {

System.out.print(i + " ");

}

selectSort(sort);

System.out.println();

System.out.print("排序后的数组为");

for (int i : sort) {

System.out.print(i + " ");

}

}

/**

* 选择排序

* @param sort

*/

private static void selectSort(int[] sort){

for(int i =0;isort.length-1;i++){

for(int j = i+1;jsort.length;j++){

if(sort[j]sort[i]){

int temp = sort[j];

sort[j] = sort[i];

sort[i] = temp;

}

}

}

}

}

三、快速排序

[java] view plain copy

package sort.quick;

/**

* 快速排序 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小,

* 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行,以此达到整个数据变成有序序列。

* @author liangge

*

*/

public class Main {

public static void main(String[] args) {

int[] sort = { 54, 31, 89, 33, 66, 12, 68, 20 };

System.out.print("排序前的数组为:");

for (int data : sort) {

System.out.print(data + " ");

}

System.out.println();

quickSort(sort, 0, sort.length - 1);

System.out.print("排序后的数组为:");

for (int data : sort) {

System.out.print(data + " ");

}

}

/**

* 快速排序

* @param sort 要排序的数组

* @param start 排序的开始座标

* @param end 排序的结束座标

*/

public static void quickSort(int[] sort, int start, int end) {

// 设置关键数据key为要排序数组的第一个元素,

// 即第一趟排序后,key右边的数全部比key大,key左边的数全部比key小

int key = sort

本篇文章给大家谈谈java岗位算法题,以及java面试常见算法题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

;

// 设置数组左边的索引,往右移动判断比key大的数

int i = start;

// 设置数组右边的索引,往左移动判断比key小的数

int j = end;

// 如果左边索引比右边索引小,则还有数据没有排序

while (i j) {

while (sort[j] key j start) {

j--;

}

while (sort[i] key i end) {

i++;

}

if (i j) {

int temp = sort[i];

sort[i] = sort[j];

sort[j] = temp;

}

}

// 如果左边索引比右边索引要大,说明第一次排序完成,将sort[j]与key对换,

// 即保持了key左边的数比key小,key右边的数比key大

if (i j) {

int temp = sort[j];

sort[j] = sort

本篇文章给大家谈谈java岗位算法题,以及java面试常见算法题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

;

sort

本篇文章给大家谈谈java岗位算法题,以及java面试常见算法题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

= temp;

}

//递归调用

if (j start j end) {

quickSort(sort, start, j - 1);

quickSort(sort, j + 1, end);

}

}

}

[java] view plain copy

/**

* 快速排序

*

* @param a

* @param low

* @param high

* voidTest

*/

public static void kuaisuSort(int[] a, int low, int high)

{

if (low = high)

{

return;

}

if ((high - low) == 1)

{

if (a[low] a[high])

{

swap(a, low, high);

return;

}

}

int key = a[low];

int left = low + 1;

int right = high;

while (left right)

{

while (left right left = high)// 左边向右

{

if (a[left] = key)

{

break;

}

left++;

}

while (right = left right low)

{

if (a[right] = key)

{

break;

}

right--;

}

if (left right)

{

swap(a, left, right);

}

}

swap(a, low, right);

kuaisuSort(a, low, right);

kuaisuSort(a, right + 1, high);

}

四、插入排序

[java] view plain copy

package sort.insert;

/**

* 直接插入排序

* 将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据

* 算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。

*/

import java.util.Random;

public class DirectMain {

public static void main(String[] args) {

Random ran = new Random();

int[] sort = new int[10];

for (int i = 0; i 10; i++) {

sort[i] = ran.nextInt(50);

}

System.out.print("排序前的数组为");

for (int i : sort) {

System.out.print(i + " ");

}

directInsertSort(sort);

System.out.println();

System.out.print("排序后的数组为");

for (int i : sort) {

System.out.print(i + " ");

}

}

/**

* 直接插入排序

*

* @param sort

*/

private static void directInsertSort(int[] sort) {

for (int i = 1; i sort.length; i++) {

int index = i - 1;

int temp = sort[i];

while (index = 0 sort[index] temp) {

sort[index + 1] = sort[index];

index--;

}

sort[index + 1] = temp;

}

}

}

顺便添加一份,差不多的

[java] view plain copy

public static void charuSort(int[] a)

{

int len = a.length;

for (int i = 1; i len; i++)

{

int j;

int temp = a[i];

for (j = i; j 0; j--)//遍历i之前的数字

{

//如果之前的数字大于后面的数字,则把大的值赋到后面

if (a[j - 1] temp)

{

a[j] = a[j - 1];

} else

{

break;

}

}

a[j] = temp;

}

}

把上面整合起来的一份写法:

[java] view plain copy

/**

* 插入排序:

*

*/

public class InsertSort {

public void sort(int[] data) {

for (int i = 1; i data.length; i++) {

for (int j = i; (j 0) (data[j] data[j - 1]); j--) {

swap(data, j, j - 1);

}

}

}

private void swap(int[] data, int i, int j) {

int temp = data[i];

data[i] = data[j];

data[j] = temp;

}

}

五、顺便贴个二分搜索法

[java] view plain copy

package search.binary;

public class Main {

public static void main(String[] args) {

int[] sort = {1,2,3,4,5,6,7,8,9,10};

int mask = binarySearch(sort,6);

System.out.println(mask);

}

/**

* 二分搜索法,返回座标,不存在返回-1

* @param sort

* @return

*/

private static int binarySearch(int[] sort,int data){

if(datasort[0] || datasort[sort.length-1]){

return -1;

}

int begin = 0;

int end = sort.length;

int mid = (begin+end)/2;

while(begin = end){

mid = (begin+end)/2;

if(data sort[mid]){

begin = mid + 1;

}else if(data sort[mid]){

end = mid - 1;

}else{

return mid;

}

}

return -1;

}

}

java算法题。小菜鸟的大问题。面试题。

帮你写出来了:用 欧几里得最大公约数 算法,然后判断:

如果分子 = 分母或者 gcd 结果 b 值不是 1 就不是最简真分数,否则就是。

我这个用正则表达式先判断输入格式了。

---------------------------------------------------------------

import java.util.regex.Pattern;

import java.io.*;

public class Demo {

public static void main (String args[]) throws IOException {

Pattern regex = Pattern.compile("[0-9]*/[0-9]*");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String num = "";

while (!(num = br.readLine()).equals("-1")) {

if (!regex.matcher(num).matches()) {

System.out.println("格式不正确,请重新输入!");

continue;

}

int a = Integer.parseInt(num.substring(0, num.indexOf('/')));

int b = Integer.parseInt(num.substring(num.indexOf('/')+1));

if (a = b || !isRelativelyPrime(a, b))

System.out.println(num + "不是最简真分数");

else

System.out.println(num + "是最简真分数");

}

}

private static boolean isRelativelyPrime (int a, int b) {

int tmp = 0;

while (a  0) {

tmp = b % a;

b = a;

a = tmp;

}

if (b == 1)

return true;

else

return false;

}

}

----------------------------- 运行结果 -------------------------------

java岗位算法题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java面试常见算法题、java岗位算法题的信息别忘了在本站进行查找喔。