java冒泡排序

废话不说,上实例:

package com.demo;

public class Demo {
	public static int[] bubbleSort(int[] nums, String str){
		/**
		 * 从大到小排序,把最小值放在最右边
		 */
		if(str.equalsIgnoreCase("desc")){
			//最外层循环只需比较nums.length - 1 次
			for (int i = 0; i < nums.length - 1; i++) {
				for (int j = 0; j < nums.length - 1 - i; j++) {
					//比较两个相邻的数
					if(nums[j] < nums[j + 1]){
						int temp = nums[j];
						nums[j] = nums[j + 1];
						nums[j + 1] = temp;
					}
				}
			}
		}
		/**
		 * 从小到大排序
		 */
		else if(str.equalsIgnoreCase("esc")) {
			for (int i = 0; i < nums.length - 1; i++) {
				for (int j = 0; j < nums.length - 1 -i; j++) {
					if(nums[j] > nums[j + 1]){
						int temp = nums[j];
						nums[j] = nums[j + 1];
						nums[j + 1] = temp;
					}
				}
			}
		}
		/**
		 * 否则返回原数组
		 */
		else return nums;
			return nums;
	}
	public static void main(String[] args) throws Exception {
		System.out.println("从大到小:");
		int nums1[] = bubbleSort(new int[]{1, 3, 5, 2, 56, 23}, "desc");
		for (int i = 0; i < nums1.length; i++) {
			System.out.print(nums1[i] + " ");
		}
		System.out.println();
		System.out.println("从小到大:");
		int nums2[] = bubbleSort(new int[]{1, 3, 5, 2, 56, 23}, "esc");
		for (int i = 0; i < nums2.length; i++) {
			System.out.print(nums2[i] + " ");
		}
		System.out.println();
		System.out.println("返回原数组:");
		int nums3[] = bubbleSort(new int[]{1, 3, 5, 2, 56, 23}, "sc");
		for (int i = 0; i < nums3.length; i++) {
			System.out.print(nums3[i] + " ");
		}
	}
}


发现和选择排序法实现类似,其实都是两层for循环。冒泡排序的基本思想是对所有相邻记录的关键字值进行比较,如果是逆序,则将其交换。

你可能感兴趣的:(java冒泡排序)