Java数组 --- 几种常用排序算法

 冒泡排序

package sortMethods;
/**
 * 冒泡排序算法的实现
 * 基本思想:比较相邻的元素,如果符合条件
 * (正序:前一个元素大于后一个,逆序:前一个元素小于后一个)
 * 则进行交换,把较大(小)的元素移动到数组尾部
 * @author Administrator
 *
 */
public class BuddleSort {
	public static void main(String[] args) {
		int [] arr = {2,45,3,7,9,10,22};
		
		BuddleSort bs = new BuddleSort();
		bs.sort(arr);
	}
	
	void sort(int[] array){
		//从i=1开始? 如果i=0,则j+1下标越界,数组中元素的比较通过j实现,通过i控制实现数组中所有元素的比较
		for (int i = 1; i < array.length; i++) {
			//j < array.length-i? 一次循环将当前数组中最大的数移动到最后,因此每进行一次一次循环,需要比较的元素数目-1
			for (int j = 0; j < array.length-i; j++) {
				// 如果当前元素大于后一个元素
				if(array[j] > array[j+1]){
					//交换位置,将较大的元素交换到靠后的位置
					int temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;
							
				}
				
			}
		}
		showArray(array);
	}
	void showArray(int[] array){
		System.out.println("冒泡排序:");
		//循环打印数组
		for (int i : array) {
			System.out.print(i+"\t");
		}
	}
}

    选择排序

package sortMethods;
/**
 * 选择排序算法的实现
 * 基本思想:将指定位置的元素与其他位置比较
 * (区别于冒泡排序,这里是将该元素与所有元素进行比较,因此没进行一次循环即减少一次比较),
 * 满足条件:
 * (正序:前一个元素大于后一个,逆序:前一个元素小于后一个)
 * 则进行交换,把较大(小)的元素移动到数组尾部
 * @author Administrator
 *
 */
public class SelectSort {
	public static void main(String[] args) {
		int [] arr = {2,45,3,7,9,10,22};
		
		SelectSort ss = new SelectSort();
		Long startTime = System.currentTimeMillis();
		ss.sort(arr);
		Long endTime = System.currentTimeMillis();
		Long time = endTime-startTime;
		System.out.println();
		System.out.println("选择排序运行时间:"+time);
	}
	
	void sort(int[] array){
		int index;
		for (int i = 1; i < array.length; i++) {
			index = 0;
			for (int j = 1; j < array.length-i; j++) {
				//寻找数组中的最大值
				if (array[j] > array[index]) {
					
						index = j;
				}
			}
			//交换array[index](比较得到的最大值)与array[array.length-i](位于当前数组末尾的元素)的值
			int temp = array[array.length-i];
			array[array.length-i] = array[index];
			array[index] = temp;
			
		}
		showArray(array);
	}
	void showArray(int[] array){
		System.out.println("选择排序:");
		//循环打印数组
		for (int i : array) {
			System.out.print(i+"\t");
		}
	}
}

    

    反转排序

package sortMethods;
/**
 * 反转排序算法的实现
 * 基本思想:将元素最后一个元素与第一个元素交换
 * 交换次数 :array。length/2次
 * @author Administrator
 *
 */
public class ReverseSort {
	public static void main(String[] args) {
		int [] arr = {2,45,3,7,9,10,22};
		
		ReverseSort rs = new ReverseSort();
		rs.sort(arr);
	}
	void sort(int[] array){
		System.out.println("反转排序之前:");
		showArray(array);
		for (int i = 1; i < array.length; i++) {
			//位置反转
			int temp = array[array.length-1-i]; 
			array[array.length-1-i] = array[i];
			array[i] = temp;
			 
		}
		System.out.println();
		System.out.println("反转排序之后:");
		showArray(array);
	}
	
	void showArray(int[] array){
		//循环打印数组
		for (int i : array) {
			System.out.print(i+"\t");
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_30007589/article/details/81006241