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

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

}

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

发布了22 篇原创文章 · 获赞 27 · 访问量 5634

猜你喜欢

转载自blog.csdn.net/k_love1219/article/details/96391775