JAVA 数组的排序方法冒泡、选择、快速、数组递增

1冒泡法排序

<strong><span style="font-size:10px;">public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55 };		// 创建一个初始化的一维数组array
		System.out.println("未排序的数组:");
		for (int i = 0; i < array.length; i++) {					// 遍历array数组中的元素
			System.out.print(" " + array[i]);					// 输出数组元素
			if ((i + 1) % 5 == 0)							// 每5个元素一行
				System.out.println();
		}
		int mid;							// 定义一个中间变量,起到临时存储数据的作用
		for (int i = 0; i < array.length; i++) {		// 执行冒泡排序法
			for (int j = i; j < array.length; j++) {
				if (array[j] < array[i]) {
					mid = array[i];
					array[i] = array[j];
					array[j] = mid;
				}
			}
		}
		System.out.println("\n使用冒泡法排序后的数组:");
		for (int i = 0; i < array.length; i++) {				// 遍历排好序的array数组中的元素
			System.out.print(" " + array[i]);				// 输出数组元素
			if ((i + 1) % 5 == 0)
				System.out.println();					// 每5个元素一行
		}
	}</span></strong>



2.数组递增法排序

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random rd = new Random();
		int[] array = new int[15]; 				// 声明数组
		System.out.println("没有使用sort方法前的数组:");
		for (int i = 0; i < array.length; i++) {		// 利用随机数随意产生15个0~20之间的随机数
			array[i] = rd.nextInt(20);			// 给array数组赋值
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}
		Arrays.sort(array);					// 对array数组进行升序排序
		//Arrays.sort(array,5,14);			// 对array数组中的第5个元素~第13个元素之间进行升序排序
		System.out.println("\n使用sort方法后的数组:");
		for (int i = 0; i < array.length; i++) {		// 将array数组中的数据输出
			System.out.print(" " + array[i]);
			if ((i + 1) % 5 == 0)
				System.out.println();
		}<span style="font-family: Arial, Helvetica, sans-serif;">	}</span>


3.选择排序

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6 };		// 创建一个初始化的一维数组array
		int keyValue;						// 表示最小的元素值
		int index;							// 表示最小的元素值的下标
		int temp;							// 中间变量
		System.out.println("未排序的数组:");
		for (int i = 0; i < array.length; i++) {		// 遍历array数组中的元素
			System.out.print(" " + array[i]);		// 输出数组元素
			if ((i + 1) % 5 == 0)				// 每5个元素一行
				System.out.println();
		}
		for (int i = 0; i < array.length; i++) {		// 使用选择排序法的核心
			index = i;
			keyValue = array[i];
			for (int j = i; j < array.length; j++)
				if (array[j] < keyValue) {
					index = j;
					keyValue = array[j];
				}
			temp = array[i];
			array[i] = array[index];
			array[index] = temp;
		}
		System.out.println("\n使用选择排序法后的数组:");
		for (int i = 0; i < array.length; i++) {			// 遍历排好序的array数组中的元素
			System.out.print(" " + array[i]);			// 输出数组元素
			if ((i + 1) % 5 == 0)
				System.out.println();				// 每5个元素一行
		}
	}



4.快速排序法

package paixu;

public class kspx {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15 };
		System.out.println("排序前的数组:");
		for (int i = 0; i < intArray.length; i++) {
			System.out.print(" " + intArray[i]);			// 输出数组元素
			if ((i + 1) % 5 == 0)						// 每5个元素一行
				System.out.println();
		}
		System.out.println();
		int[] b = quickSort(intArray, 0, intArray.length - 1);	// 调用quickSort
		System.out.println("使用快迅排序法后的数组:");
		for (int i = 0; i < b.length; i++) {
			System.out.print(" " + b[i]);
			if ((i + 1) % 5 == 0)						// 每5个元素一行
				System.out.println();
		}
	}
	public static int getMiddle(int[] array, int left, int right) {
		int temp;
		// 进行一趟快速排序,返回中心点位置
		int mid = array[left];							// 把中心置于a[0]
		while (left < right) {
			while (left < right && array[right] >= mid)
				right--;
			temp = array[right]; 						// 将比中心点小的数据移动到左边
			array[right] = array[left];
			array[left] = temp;
			while (left < right && array[left] <= mid)
				left++;
			temp = array[right]; 						// 将比中心点大的数据移动到右边
			array[right] = array[left];
			array[left] = temp;
		}
		array[left] = mid; 							// 中心移到正确位置
		return left; 								// 返回中心点
	}
	public static int[] quickSort(int[] array, int left, int right) {// 快速排序法
		if (left < right - 1) {			// 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾
			int mid = getMiddle(array, left, right);		// 重新获取中间点
			quickSort(array, left, mid - 1);
			quickSort(array, mid + 1, right);
		}
		return array;
	}

}




  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值