笔试编程题

编程题:
1.数组排序
冒泡排序:(main方法直接调用,传入数组)缺点时间复杂度为n*(n-1).

//冒泡排序
public static void bubbleSort(int arr []) {
	int temp=0;//临时存储变量
	for(int i=0;iarr[j+1]) {
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
}

2.一维数组转置
方案一:新建一个数组,反向循环取出给定数组元素,顺序存储在新建数组中,遍历即可。缺点:开辟了新的内存空间,占用资源。

//转置数组方案一
public static int[] reverseArray(int[] arr) {
	int[] temp=new int[arr.length];
	int foot=arr.length-1;//定义变量,赋值给定数组末尾元素
	for(int i=0;i

方案二:折半对换首尾元素,以中间元素索引为参考转换次数(更优)

//转置数组方案二
public static void reverseArrayTwo(int[] arr) {
	int center=arr.length/2;//转换次数
	int head=0;//头部开始索引
	int tail=arr.length-1;//尾部开始索引
	int temp=0;//临时存储数据
	for(int i=0;i

3.二维数组转置

// 二维数组转置
public static void doubleArrayReverse(int[][] arr) {
	
	for (int i = 0; i < arr.length; i++) {//行数
		for (int j = i; j < arr.length; j++) {//以i=j为中间轴,列数对应行数位置
			if (i != j) {//如果列数和行数位置不对应,行和列的值对换
				int temp = arr[i][j];
				arr[i][j] = arr[j][i];
				arr[j][i] = temp;
			}
		}
	}
}

笔试编程题_第1张图片
4.数组查找元素
4.1有序数组查找

 //二分查找/折半查找(数组有序)
public static int halfSearch(int[] arr,int from,int to,int key) {
	int mid =from+(to-from)/2; //计算中间点,关键点。from:头部开始索引,初始为0,to:尾部结束索引,初始为数组长度length,key :查找的元素。
	if(from<=to) {
		if(arr[mid]==key) {
			return mid;
		}else if(arr[mid]key){
			//查找元素key在左边,to修改为上一趟中间值的左边一位,递归调用
			return halfSearch(arr, from, mid-1, key);
		}else {
			//无此元素,返回-1,表示不存在。
			return -1;
		}
	}
	return 0;
}

4.2无序数组查找
先排序,再利用二分法(折半)查找。

5.数组中两个元素之和=给定元素
【特殊:数组中有0,并且存在两个及以上相同的数据,需要排除重复(即判断两数不分顺序以及相同数据出现4次及以上组合)】
如int[] a={0,1,2,2,4,5,6,7} 如给定元素7=3+4;将会出现3和4;4和3两组值,给定元素4=2+2;(数组中存在两个2)将会出现4次2,2的组合。这些情况是不允许出现的,需要判断后,仅输入一次组合

	//查找数组中两个元素之和=特定元素
public static void searchElement(int [] a,int key) {
	int m=0,n=0;//定义两个变量,用于接收数组中可能存在的两个数之和=key
	int count=0;//用于处理数组可能存在两个数之和=key,并且两数重复的次数。
	for(int j=0;j

在这里插入图片描述
6.字符串转置
6.1stringBuffer转置 :reverse转换字符串。

public static String reverString(String str) {
	
	return new StringBuffer().append(str).reverse().toString();
}

6.2charAt()方法,进行字符串的拼接

//charAt字符串的拼接
public static void reverseStringCharAt(String str) {
	String s ="";
	for(int i=0;i

7.字符串转换为字符数组

// 字符串转为字符数组
public static void reverseStringToChar(String str) {
	char a[] = new char[str.length()];
	for (int i = 0; i < str.length(); i++) {
		a[i] = str.charAt(i);
	}
	for (int k = 0; k < a.length; k++) {
		System.out.print(" "+a[k]);
	}
}

8.查找子字符串的位置

public static int searchString(String str,String toStr) {
	return str.indexOf(toStr);
}

9.替换字符串中指定的字符

public static void replaceString(String str,String oldStr,String newStr) {
	System.out.println(str.replaceAll(oldStr,newStr));//字符串方法,第一个参数是要替换的字符,第二个参数是新的字符
}

10.实现字符串首字母大写

public static String changeStr(String str) {
	if(str==null || "".equals(str)) {//为null或者为空时,不作处理
		return str;
	}
	if(str.length()==1) {//只有一个字符时,直接转换
		return str.toUpperCase();
	}
	return str.substring(0, 1).toUpperCase()+str.substring(1);//截取0索引位置的字符,然后截取索引1之后的字符串,并进行拼接。
}

11.统计字符串中指定字符出现字数

public static void countString(String str,char a) {
	int count=0;
	char arr[]=str.toCharArray();//转换为字符数组
	for(int i=0;i

【延伸】统计字符串中指定的两个字符的次数

public static void countString(String str,char a,char b) {
	int[] count=new int[2];//分别存储两个字符统计次数
	char arr[]=str.toCharArray();//转化为字符数组
	for(int i=0;i

你可能感兴趣的:(笔试编程题)