现在面试过程中,java基础算法,冒泡,数组等也是经常考察的对象,好记性不如烂笔头,在此记录,方便以后查阅。,希望对大家有帮助。有不足之处请大家指出!
- 从大到小(冒泡)
package helloWorld;
import java.util.Arrays;
/**
* 给定一个数组{3,23,6,89,2} 从大到小(冒泡)
*
* @author Administrator
*
*/
public class 冒泡排序1 {
public static void main(String[] args) {
System.out.println("------------------------------");
int arr[] = { 3, 23, 6, 89, 2 };
System.out.println("排序前(无序排列):" + Arrays.toString(arr));
int temp = 0;
boolean flag = false;
for (int i = 0; i < arr.length - 1; i++) {
flag = false;
for (int j = arr.length - 1; j > i; j--) {
if (arr[j - 1] < arr[j]) {
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
flag = true;
}
}
}
System.out.println("排序后(从大到小):" + Arrays.toString(arr));
System.out.println("------------------------------");
}
}
- 从小到大(冒泡)
package org.liuykxl.java;
import java.util.Arrays;
/**
* 从小到大(冒泡)
* @author lenovo
*
*/
public class 冒泡排序2 {
public static void main(String[] args) {
int arr[] = {5,7,0,4,2,1};
System.out.print("排序前:"+Arrays.toString(arr));
int temp = 0; //用来交换的临时数
boolean flag=false;
// 要遍历的次数
for (int i = 0; i < arr.length - 1; i++) {
flag=false;
// 从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
for (int j = arr.length - 1; j > i; j--) {
// 比较相邻的元素,如果前面的数大于后面的数,则交换
if (arr[j - 1] > arr[j]) {
temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
flag=true;
}
}
}
System.out.print("排序后:"+Arrays.toString(arr));
}
}
- 随便给定一个数组int arr[] = {2,36,9,3,5,7}; 倒序输出里面的元素
package org.liuykxl.java;
import java.util.Arrays;
/**
* 随便给定一个数组int arr[] = {2,36,9,3,5,7};
* 倒序输出里面的元素
* @author lenovo
*
*/
public class ArrayList {
public static void main(String[] args) {
int arr[] = {2,36,9,3,5,7};
for (int i = arr.length-1; i >=0; i--) {
System.out.println(arr[i]);
}
Integer[] arrs = {1, 9, 4, 3, 2, 7, 11, 8};
System.out.println(Arrays.toString(arrs));
Arrays.sort(arrs);
System.out.println(Arrays.toString(arrs));
}
}
- 数组arr:1 5 2 4 7,删除元素2,使用Arrays.toString(arr);使其变成:1 5 4 7
package org.liuykxl.java;
import java.util.Arrays;
/**
数组arr:1 5 2 4 7
删除元素2
使用Arrays.toString(arr);
使其变成:1 5 4 7
* @author lenovo
*
*/
public class ArrayList1 {
public static int search(int[] arr,int value){
for(int i=0;i<arr.length;i++){
if (arr[i] == value){
return i;
}
}
return -1;
}
public static int[] delete(int[] arr,int value){
int index= search(arr,value);
if (index< 0){
return arr;
}
for(int i = index;i<arr.length-1;i++){
arr[i] = arr[i+1];
}
arr=Arrays.copyOf(arr,arr.length-1);
return arr;
}
public static void main(String[] args){
int[]arr={1,5,2,4,7};
arr=delete(arr,2);
System.out.println(Arrays.toString(arr));
}
}
- 删除有重复元素的数组
package org.liuykxl.java;
import java.util.Arrays;
/**
* 删除有重复元素的数组
*
* @author lenovo
*
*/
public class ArrayList2 {
public static int[] deleteRepeatValue(int[] arr, int value) {
for (int i = 0; i < arr.length;) {
if (arr[i] == value) { // 数据移动
for (int j = i; j < arr.length - 1; j++) {
arr[j] = arr[j + 1];
}
arr = Arrays.copyOf(arr, arr.length - 1);
} else {
i++;
}
}
return arr;
}
public static void main(String[] args) {
int[] arr = { 2, 2, 2, 2, 0 };
arr = deleteRepeatValue(arr, 2);
System.out.println(Arrays.toString(arr));
}
}
删除链表的倒数第N个节点
给定一个链表,删除链表倒数第N个节点,并且返回链表的头结点
示例:
给定一个链表:1-2-3-4-5 和N=2
当删除了倒数第N个节点后,链表变为1-2-3-5
package org.liuykxl.java;
import java.util.Arrays;
/**
* 删除链表的倒数第N个节点
* 给定一个链表,删除链表倒数第N个节点,并且返回链表的头结点
* 示例:
* 给定一个链表:1-2-3-4-5 和N=2
* 当删除了倒数第N个节点后,链表变为1-2-3-5
* @author lenovo
*
*/
public class ArrayList3 {
public static void main(String[] args) {
int [] arr= {1,2,3,4,5};
System.out.println("删除元素之前:"+Arrays.toString(arr));
arr=deleteAll(arr,2);
System.out.println("删除元素之后:"+Arrays.toString(arr));
}
private static int[] deleteAll(int[] arr, int value) {
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-2) {
value =i;
}
}
for (int j = value; j < arr.length-1; j++) {
arr[j]=arr[j+1];
}
arr=Arrays.copyOf(arr,arr.length-1);
return arr;
}
}
欢迎大家评论转发,收藏!