【Java】数组中常用的几种排序方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdkyxy2013/article/details/81901038

本文主要介绍数组中常用的几种排序方法,代码如下:

package com.xzw.csdn;

import java.util.Arrays;

/**
 * 数组常用的几种排序
 * @author xzw
 *
 */
public class PaiXu {

	/**
	 * 主函数
	 * @param args
	 */
	public static void main(String[] args) {
		int[] array = {12,25,3,56,89};
		//将数组里面的元素升序排序1(冒泡排序)
		px1(array);
		//将数组里面的元素升序排序2(冒泡排序)
		px2(array);
		//将数组里面的元素升序排序3(冒泡排序)
		px3(array);
		//选择排序
		px4(array);
	}

	/**
	 * 将数组里面的元素升序排序1(冒泡排序)
	 * @param array
	 */
	public static void px1(int[] array){
		int i;
		System.out.print("从小到大排序为: ");
		for (i = 0; i <= 4; i++){
			for (int j = 1; j < array.length; j++){
				if ( array[j-1] >  array[j]){ 
					array[j-1] ^=  array[j];
					array[j] ^=  array[j-1];
					array[j-1] ^=  array[j];
				}
			}
		}
		for (i = 0; i <= 4; i++)
			System.out.print(array[i]+" ");
		System.out.println();
	}

	/**
	 * 将数组里面的元素升序排序2(冒泡排序)
	 * @param array
	 */
	public static void px2(int[] array){
		int i, t = 0;
		System.out.print("从小到大排序为: ");
		for (i = 4; i >= 0; i--){
			for (int j = 1; j < array.length; j++){
				if ( array[j-1] <  array[j]){ 
					t = array[j-1];
					array[j-1] = array[j];
					array[j] = t;
				}
			}
			System.out.print(array[i]+" ");
		}
		System.out.println();
	}

	/**
	 * 将数组里面的元素升序排序3(冒泡排序)
	 * @param array
	 */
	public static void px3(int[] array){
		for (int i = 0; i < array.length-1; i++) {//比较次数
			for (int j = 0; j < array.length-(i+1); j++) {//比较方法
				if(array[j] > array[j+1]){
					array[j] ^=  array[j+1];
					array[j+1] ^=  array[j];
					array[j] ^=  array[j+1];
				}
			}
		}
		//遍历
		System.out.print("[");
		for (int i = 0; i < array.length; i++) {
			if (i == array.length-1){
				System.out.print(array[i]);
			}else{
				System.out.print(array[i]+",");
			}
		}
		System.out.println("]");
		//System.out.println("最终结果:"+Arrays.toString(array));

	}

	/**
	 * 选择排序
	 * @param array
	 */
	public static void px4(int[] array){
		for (int i = 0; i < array.length-1; i++) {
			for (int j = i+1; j < array.length; j++) {
				//array[i] vs array[j]
				if (array[i] > array[j]){
					array[i] ^= array[j];
					array[j] ^= array[i];
					array[i] ^= array[j];
				}
			}
			System.out.println("第"+(i+1)+"次结果:"+Arrays.toString(array));
		}
		System.out.println("最终结果:"+Arrays.toString(array));
	}
}

你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。

猜你喜欢

转载自blog.csdn.net/gdkyxy2013/article/details/81901038