Java面试题附答案1.3(完整版关注并点击主页):Java基础、语法

Java面试题附答案1.3(完整版关注并点击主页):Java基础、语法

15.递归的定义和优缺点

递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

递归算法解决问题的特点:

(1) 递归就是在过程或函数里调用自身。

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3) 递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递归算法设计程序。

(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

16.数组的特征

数组是(相同类型数据)的(有序)(集合)

数组会在内存中开辟一块连续的空间,每个空间相当于之前的一个变量,称为数组的元素element

元素的表示 数组名[下标或者索引] scores[7] scores[0] scores[9]

索引从0开始

每个数组元素有默认值 double 0.0 boolean false int 0

数组元素有序的,不是大小顺序,是索引 的顺序

数组中可以存储基本数据类型,可以存储引用数据类型;但是对于一个数组而言,数组的类型是固定的,只能是一个

length:数组的长度

数组的长度是固定的,一经定义,不能再发生变化(数组的扩容)

17.请写出冒泡排序代码

package com.bjsxt;

public class TestBubbleSort {

public static void sort(int[] a) {

int temp = 0;

// 外层循环,它决定一共走几趟

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

//内层循环,它决定每趟走一次

for (int j = 0; j <a.length-i-1 ; ++j) {

//如果后一个大于前一个

if (a[j + 1] < a[j]) {

//换位

temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;

}

}

}

public static void sort2(int[] a) {

int temp = 0;

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

//通过符号位可以减少无谓的比较,如果已经有序了,就退出循环

int flag = 0;

for (int j = 0; j <a.length-1-i ; ++j) {

if (a[j + 1] < a[j]) {

temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

flag = 1;

}

}

if(flag == 0){

break;

}

}

}

}

18.请写出选择排序的代码

package com.bjsxt;

public class TestSelectSort {

public static void sort(int arr[]) {

int temp = 0;

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

// 认为目前的数就是最小的, 记录最小数的下标

int minIndex = i;

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

if (arr[minIndex] > arr[j]) {

// 修改最小值的下标

minIndex = j;

}

}

// 当退出for就找到这次的最小值

if (i != minIndex) {

temp = arr;

arr = arr[minIndex];

arr[minIndex] = temp;

}

}

}

}

19.请写出插入排序的代码

package com.bjsxt;

public class TestInsertSort {

public static void sort(int arr[]) {

int i, j;

for (i = 1; i < arr.length; i++) {

int temp = arr;

for (j = i; j > 0 && temp < arr[j - 1]; j--) {

arr[j] = arr[j - 1];

}

arr[j] = temp;

}

}

}

你好,欢迎关注!Java相关,超级干货,每日分享

© 2019 爱讯头条 秀色女神

京ICP证140141号