> 文档中心 > 冒泡排序以及数组方法使用

冒泡排序以及数组方法使用


现在面试过程中,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  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  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;}}

欢迎大家评论转发,收藏!