java 一维数组排序

介绍几种简单的使用java对一维数组进行排序(本人菜鸟,如有错误还望大神多多指出!):
// 冒泡排序
	public void bubble_sort() {
		int arr[] = { 1, 23, 34, 54, 2, 3, 12, 9 };
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - 1 - i; j++) {
				// 用<就是从大到小,用>就是由小到大
				if (arr[j] > arr[j + 1]) {
					int t = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = t;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "\t");
		}
	}

	// 选择排序
	public void selection_sort() {
		int arr[] = { 1, 23, 34, 54, 2, 3, 12, 9 };
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				// 用<就是从大到小,用>就是由小到大
				if (arr[i] > arr[j]) {
					int t = arr[i];
					arr[i] = arr[j];
					arr[j] = t;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "\t");
		}
	}

	// 查找算法(从数组里查找12这个数);
	public void lookup_algorithm() {
		int arr[] = { 1, 23, 34, 54, 2, 3, 12, 9 };
		boolean flag = false;
		int index = 12;
		for (int i = 0; i < arr.length; i++) {
			if (index == arr[i]) {
				flag = true;
				break;
			}
		}
		if (flag) {
			System.out.println("找到了:" + index);
		} else {
			System.out.println("未找到");
		}
	}

	// 插入算法(插入5)
	public void insertion_algorithm() {
		int arr[] = { 1, 23, 34, 54, 2, 3, 12, 9 };
		int num = 5;
		arr[arr.length - 1] = num; // 给数组最后一个坐标赋值
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[i] > arr[j]) {
					int t = arr[i];
					arr[i] = arr[j];
					arr[j] = t;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "\t");
		}
	}

	// 数组复制
	public void Copy_Ary() {
		int arrOld[] = { 1, 32, 32, 4234, 4334, 1223, 1 };
		int arrNew[] = new int[arrOld.length];
		for (int i = 0; i < arrOld.length; i++) {
			arrNew[i] = arrOld[i];
		}
		for (int i = 0; i < arrNew.length; i++) {
			System.out.print(arrNew[i] + "\t");
		}
	}

	/**
	 * 直接插入排序 基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,
	 * 现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
	 */
	public static void insertSort() {
		int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35,
				25, 53, 51, 1, 96 };
		int temp = 0;
		for (int i = 1; i < a.length; i++) {
			int j = i - 1;
			temp = a[i];
			for (; j >= 0 && temp < a[j]; j--) {
				a[j + 1] = a[j]; // 将大于temp的值整体后移一个单位
			}
			a[j + 1] = temp;
		}
		for (int i = 0; i < a.length; i++) {
			if (i % 10 == 9) {
				System.out.print(a[i] + "\n");
			} else {
				System.out.print(a[i] + "\t");
			}
		}
	}

	/**
	 * 希尔排序(最小增量排序) 基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,
	 * 每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(
	 * d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
	 */
	public static void shellSort() {
		int a[] = { 1, 54, 6, 3, 78, 34, 12, 45, 56, 100 };
		double d1 = a.length;
		int temp = 0;
		while (true) {
			d1 = Math.ceil(d1 / 2);
			int d = (int) d1;
			for (int x = 0; x < d; x++) {
				for (int i = x + d; i < a.length; i += d) {
					int j = i - d;
					temp = a[i];
					for (; j >= 0 && temp < a[j]; j -= d) {
						a[j + d] = a[j];
					}
					a[j + d] = temp;
				}
			}
			if (d == 1)
				break;
		}
		for (int i = 0; i < a.length; i++) {
			if (i % 10 == 9) {
				System.out.print(a[i] + "\n");
			} else {
				System.out.print(a[i] + "\t");
			}
		}
	}



  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值