一些常见排序的代码实现

//冒泡排序代码实现
package com.lsf.beijing;

public class Test_8_15_1 {

	public static void main(String[] args) {
		int nums[] = { 1, 4, 5, 7, 3, 2, 9, 8, 6, 0 };// 定义一个int类型的数组,以便后面对此数组进行冒泡排序
		int i;// i表示前面那个数
		int j;// j表示后面那个数
		int temp = 0;// 定义一个int类型的变量,进行交换数据

		// 用双重for循环进行数据交换
		for (i = 0; i < nums.length - 1; i++) {
			for (j = i + 1; j < nums.length; j++) {
				if (nums[i] < nums[j]) {
					temp = nums[i];
					nums[i] = nums[j];
					nums[j] = temp;
				}
			}
		}

		// 用for循环打印出排列好的数组
		for (int a = 0; a < nums.length; a++) {
			System.out.println(nums[a]);
		}

	}
}





//选择排序的代码实现
package com.lsf.beijing;

public class Test_8_15_2 {

	public static void main(String[] args) {
		int nums[] = { 1, 4, 5, 7, 3, 2, 9, 8, 6, 0 };// 定义一个int类型的数组,以便后面对此数组进行选择排序
		for (int i = 0; i < nums.length - 1; i++) {
			int index = i;// 假设当前的i就是最大数
			for (int j = i + 1; j < nums.length; j++) {
				if (nums[index] < nums[j]) {
					index = j;// 把最大的数的下标给index
				}
			}
			int temp = 0;// 定义一个变量,用来进行数据交换
			temp = nums[i];
			nums[i] = nums[index];
			nums[index] = temp;
		}

		// 用for循环来打印数组
		for (int i = 0; i < nums.length; i++) {
			System.out.println(nums[i]);
		}
	}

}



//插入排序的代码实现
/*	基本思路:
	每次nums[i]先和前面一个数据nums[i-1]比较,如果nums[i] >nums[i-1]说明nums[0…i]也
	是有序的,无须调整。否则就令j=i-1,temp=nums[i]。然后一边将数据nums[j]向后移动一
	边向前搜索,当有数据nums[j]<nums[i]时停止并将temp放到nums[j + 1]处。
*/
package com.lsf.beijing;

public class Test_8_15_3 {

	public static void main(String[] args) {
		int nums[] = { 1, 4, 5, 7, 3, 2, 9, 8, 6 ,0};// 定义一个int类型的数组,以便后面对此数组进行插入排序
		int i;//定义一个变量i,用来记录数组长度
		int j;
		for (i = 1; i < nums.length; i++) {
			
			//如果前面那个数比后面那个数大,则把后面那个数放到temp变量里
			if (nums[i - 1] > nums[i]) {
				int temp = nums[i];
				
				//如果num[j]比num[i]大,则所有数都往后移动一格
				for (j = i - 1; j >= 0 && nums[j] > temp; j--) {
					nums[j + 1] = nums[j];
				}
				nums[j + 1] = temp;
			}

		}

		// 用for循环来打印数组
		for (int a = 0; a < nums.length; a++) {
			System.out.println(nums[a]);
		}

	}

}


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