`
lw4135
  • 浏览: 46970 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

温故而知新——数组排序算法

阅读更多
    
import java.util.Arrays;

/**
 * @author liuwang 插入和快速类似,希尔最快,可以讲比较互换的操作放在栈内存中提高效率,tips:创建的对象在堆内存中。
 */
public class SelectSort {

	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 9, 8, 7, 6, 5 };
         //或者这样初始化:int[] arr =new int[]{ 1, 2, 3, 4, 9, 8, 7, 6, 5 };

		System.out.print("自然顺序:");
		for (int x = 0; x < arr.length; x++) {
			System.out.print(arr[x]);
		}
		System.out.println();
		System.out.print("sort排序:");
		Arrays.sort(arr);
		for (int j : arr) {
			System.out.print(j);
		}
		System.out.println();
		System.out.print("选择排序:");
		selectSort(arr);
		for (int i : arr) {
			System.out.print(i);
		}
		bubbleSort(arr);
		System.out.println();
		System.out.print("冒泡排序:");
		for (int i : arr) {
			System.out.print(i);
		}
	}  



	/**
	 * 选择的思想:第一轮比较,是将第一元素和接下来的每一个比,按规则互换,比完了将最值放到第一个元素。
	 * 
	 * @param arr
	 */
	public static void selectSort(int[] arr) {
		for (int x = 0; x < arr.length - 1; x++) {
			for (int y = x + 1; y < arr.length; y++) {
				if (arr[x] > arr[y]) {
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;
				}

			}
		}

	}



	/**
	 * 冒泡的思想:第一轮比较,都是从0角标开始,前一个元素和后一个元素比较,按照既定的规则,将最值移到最后。
	 * 最值是一步一步冒出来的。
	 * @param arr
	 */
	public static void bubbleSort(int[] arr) {
		for (int x = 0; x < arr.length - 1; x++) {
			for (int y = 0; y < arr.length - x - 1; y++) {
				if (arr[y] < arr[y + 1]) {
					int temp = arr[y];
					arr[y] = arr[y + 1];
					arr[y + 1] = temp;
				}
			}
		}
	}

}
	/**
	 * 插入法排序
	 */
	public static void insert(int[] arr) {
		for (int x = 0; x < arr.length - 1; x++) {
			for (int y = x; y > 0 && arr[y] < arr[y - 1]; y--) { // 与所有之前的元素遍历一遍。
				int temp = arr[y];
				arr[y] = arr[y - 1];
				arr[y - 1] = temp;
			}
		}
	}
  • 大小: 22.5 KB
  • 大小: 23.9 KB
  • 大小: 522.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics