java中的排序

/**
 * 选择排序:首先第一趟从n个元素中找到最大或最小的元素与第一个元素交换; 
 * 第二趟从第二个元素开始的第n-1个元素中再选出最小的放到第二位,以此类推。
 * @author Administrator
 * 
 */
public class SelectSort {

	/**
	 * 有大到小
	 * 
	 * @param values
	 */
	public static void descSort(int[] values) {
		int temp = 0;
		for (int i = 0; i < values.length; i++) {
			for (int j = i + 1; j < values.length; j++) {
				// 如果后面的一位大于前面的以为,则两个值交换位置
				if (values[i] < values[j]) {
					temp = values[i];
					values[i] = values[j];
					values[j] = temp;
				}
			}
		}
	}

	/**
	 * 有大到小
	 * 
	 * @param values
	 */
	public static void ascSort(int[] values) {
		int temp = 0;
		for (int i = 0; i < values.length; i++) {
			for (int j = i + 1; j < values.length; j++) {
				// 如果后面的一位小于前面的以为,则两个值交换位置
				if (values[i] > values[j]) {
					temp = values[i];
					values[i] = values[j];
					values[j] = temp;
				}
			}
		}
	}

	public static void main(String[] args) {
		int[] values = { 5, 1, 9, 10, 6, 4, 7, 8, 3, 2 };
		SelectSort.ascSort(values);
		for (int i = 0; i < values.length; i++) {
			System.out.println(values[i]);
		}
	}

}

 

package com.yt;

/**
 * 插入排序:简单说就是数组里第二个和第一个比谁小,把小的放到第一个里,
 * 大的放到第二个里,然后第二个再和第三个比,小的还是放在前,一直比到这个数组结束
 * @author Administrator
 * 
 */
public class InsertSort {

	public static void injectionSort(int[] number){
		for(int i = 1;i<number.length;i++){
			int tmp = number[i];
			int j = i-1;
			while(tmp<number[j]){
				number[j+1] = number[j];
				j--;
				if(j == -1)
					break;
			}
			number[j+1] = tmp;
		}
	}

	public static void main(String[] args) {
		int[] nums = { 2, 3, 9, 10, 5, 6, 8, 4, 7, 1 };
		InsertSort.injectionSort(nums);
		for (int i = 0; i < nums.length; i++) {
			System.out.println(nums[i]);
		}
	}

}
 
package com.yt;

/**
 * 冒泡排序:将n个元素中的第一个和第二个相比较,如果两个元素的顺序为逆序,则交换两个元素的位置;再
 * 进行第二个元素和第三个元素的比较,如此类推,只到比较第n-1个元素和n个元素为止。
 * @author Administrator
 * 
 */
public class MaoPaoSort {

	public static void mpDescSort(int[] values) {
		int temp = 0;
		for (int i = 1; i < values.length + 1; i++) {
			for (int j = 0; j < values.length - i; j++) {
				if (j < values.length - 1) {
					if (values[j] < values[j + 1]) {
						temp = values[j + 1];
						values[j + 1] = values[j];
						values[j] = temp;
					}
				}
			}
		}
	}

	public static void mm(int[] nums) {
		int temp = 0;
		for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < nums.length - i; j++) {
				if (j < nums.length - 1 && nums[j] > nums[j + 1]) {
					temp = nums[j];
					nums[j] = nums[j + 1];
					nums[j + 1] = temp;
				}
			}
		}
	}

	public static void main(String[] args) {
		int[] nums = { 2, 3, 9, 10, 5, 6, 8, 4, 7, 1 };
		MaoPaoSort.mpDescSort(nums);
		for (int i = 0; i < nums.length; i++) {
			System.out.println(nums[i]);
		}
	}

}

你可能感兴趣的:(java)