冒泡排序,选择排序,插入排序及数组中的辅助类Arrays常用方法(java)

一.冒泡排序

1)· 冒泡排序的思路:相邻两位的元素进行比较。例如:设升序为有序,相邻两数进行比较,如果下一个数字比这个大,则交换位置,否则继续循环,以此循环一轮,元素中最大的数已在最末尾;第二轮进行比较,将次大元素放入倒数第二位,此时不用与最后一位元素进行比较;第三轮进行比较,将第三大数放在倒数第三位,不与最后两位元素进行比较…以此类推,完成a.length-2轮循环完成排序
2)· 代码如下:

     public void test() {
     
		int[] a = {
     9,8,7,6,5,4,3,2,1};
		BubbleSort(a);
		System.out.println(Arrays.toString(a));
	}
     /*
	 * 冒泡排序
	 */
	public static void BubbleSort(int[] a) {
     
		for (int i = 0; i < a.length - 1; i++) {
     // i
		     boolean f = true;//优化处理
			for (int j = 0; j < a.length - 1 - i; j++) {
     // i

				if (a[j] > a[j + 1]) {
     
                                   //将大的元素放到后一位
					int t = a[j];
					a[j] = a[j + 1];
					a[j + 1] = t;
                      f= false;
				}
			}
			if(f){
     
			break; //f=ture说明有序,无需继续比较。
			}
		}
	}

3)·时间复杂度:O(n^2)

二.选择排序

1)·选择排序的思路:找到最大/最小值进行换位。设升序为有序。第一轮找到最大/最小的元素和最末尾/首位元素进行交换位置;第二轮找到次大/次小的元素和倒数第二位/正数第二位元素进行交换…以此类推完成排序。
2)·代码如下:

public void test() {
     
		int[] a = {
     9,8,7,6,5,4,3,2,1,};
		SelcetSort(a);
		System.out.println(Arrays.toString(a));
	}
/*
* 选择排序
*/
public static void SelcetSort(int[] a) {
     
		for (int i = 0; i < a.length - 1; i++) {
     // i
			int min = a[i];// 假设循环当前的a[i]是最小值
			for (int j = i + 1; j < a.length; j++) {
     // j=i+1:从下一项开始比较。
				if (a[j] < min) {
     
					min = a[j];
					a[j] = a[i];
					a[i] = min;// 将小值转换到i次循环的a[i]位置
				}
			}
		}
	}

3)·时间复杂度:O(n^2)

三.插入排序

1)·插入排序思路:将元素插入部分有序的数组中(类似于打牌)。例如:最左边的为基准,大于他的插入到右边,小于他的插入到左边,使数组变得有序。
2)·代码如下:

public void test() {
     
		int[] a = {
      9, 8, 7, 6, 5, 4, 3, 2, 1, };
		InsertionSort(a);
		System.out.println(Arrays.toString(a));
	}
/*
* 插入排序
*/
public static void InsertionSort(int[] a) {
     
		for (int i = 1; i < a.length; i++) {
     
			int tmp = a[i];// 插入的值
			int j;
			for (j = i; j > 0 && a[j - 1] > tmp; j--) {
     
				a[j] = a[j - 1];//给插入的值腾出位置
			}
			a[j] = tmp;
		}
	}

3)·时间复杂度:O(n^2)

四.Arrays类常用方法

Arrays:数组的辅助类
-Array.toString():将一个数组array转换成一个字符串
-Array.deepToString():多用于多维数组的显示
-Arrays.sort():对数组进行排序
-copyOf():把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
-rangCopyOf():同为复制数组
-binarySearch():查询元素值在数组中的下标(要求有序)

你可能感兴趣的:(java,排序算法,java,排序算法,算法)