排序算法(简单排序,冒泡排序)

int[] a = new int[10];

		for (int i = 0; i < a.length; i++) {
			a[i] = random();

			System.out.print(a[i] + "   ");
		}
		System.out.println();

		int temp = 0;

		// 从小到大

		// 简单选择排序法
		// 方法1
		int minIndex = 0;
		for (int i = 0; i < a.length - 1; i++) {
			minIndex = i;
			for (int j = i + 1; j < a.length; j++) {
				if (a[j] < a[minIndex]) {
					minIndex = j;
				}
				if (minIndex != i) {
					temp = a[i];
					a[i] = a[minIndex];
					a[minIndex] = temp;
				}
			}
		}

		System.out.println();
		for (int x : a) {
			System.out.print(x + "   ");
		}

		// 方法2
		for (int i = 0; i < a.length - 1; i++) {
			for (int j = i + 1; j < a.length; j++) {
				if (a[i] > a[j]) {
					temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
		}

		System.out.println("从小到大的值为:");
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "   ");
		}

		// 冒泡算法

		boolean swapped = true;
		for (int i = 1; swapped && i <= a.length - 1; i++) {
			swapped = false;
			for (int j = 0; j < a.length - i; j++) {
				if (a[j] > a[j + 1]) {
					temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
					swapped = true;
				}
			}
		}

		for (int x : a) {
			System.out.print(x + "   ");
		}

	}

  

时间: 2024-10-13 11:33:20

排序算法(简单排序,冒泡排序)的相关文章

若干排序算法简单汇总(一)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35819279 作者:小马 从题目看,首先不是全部是若干.排序算法很多,我个人的能力也有限,不可能都讲到.另外,是简单汇总,是希望能用最简单的代码,最简短的语言说明问题,不搞太多理论分析. 就像前面说的,排序算法有很多,而且不存在哪一种最不好,哪一种最好这样的说法.根据用途不同选择最适合的就行了.不过仅从时间复杂度来看,基本上有两种,一种是O(n^2), 一种是O(nlogn).

若干排序算法简单汇总(二)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/36706131 作者:小马 一希尔排序 上一篇讲到的直接插入排序,时间复杂度O(n^2). 请在脑海里想一下它的过程.如果一个序列本来就是有序的,对它排序的时间复杂度是O(n).所以当序列基本有序时,插入排序排序的效率大大提高,因为减少了移动的动作. 另外,直接插入排序还有一个特点,当n比较小时,它的效率比较高. 希尔排序正是基于上面两个思想做的一种改进算法.它先将整个序列分成若干

排序算法总结之冒泡排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它的基本思想就是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 例如:初始序列3,6,4,2,11,10,5:从头开始,两两相比,若a[i]>a[i+1],则将两者交换: 从上面的排序过程来看,其实在第2趟结束后,数据序列就已经是有序的了

排序算法之从冒泡排序所想到的

1.算法思想描述: 1)将相邻的两个数进行比较,如果前面的一个大于后面的一个,则将他们交换.每次循环能使一个数达到有序状态. 2.时间复杂度: 平均O(n^2).最佳:O(n),在序列一开始就是正序的时候取得 3.实现及优化. 以下给出三种实现方式 /* * bubblesort.cpp * * Created on: 2014年5月17日 * Author: pc */ #include <iostream> #include <cstdio> #include <ctim

经典排序算法 - 鸡尾酒排序Cocktail sort

经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代,5 > 1交换 [2 3 4 1 5] 第一趟回来时的第一步,鸡尾酒一次到头后就回返回来,再到头后再过去,来回比,一个来回能排两个数字 第五步迭代,1 &l

经典排序算法 - 地精排序Gnome Sort

经典排序算法 - 地精排序Gnome Sort 号称最简单的排序算法,只有一层循环,默认情况下前进冒泡,一旦遇到冒泡的情况发生就往回冒,直到把这个数字放好为止 直接看它排序的过程,待排数组[6 2 4 1 5 9] 先设计一个标识i=0然后从头开始判断,什么时候(i < 6)不成立,什么时候排序结束, 所以,如何控制i的值是这个算法的关键 例如待排数组: [6 2 4 1 5 9] [0 1 2 3 4 5] 看一下具体的排序过程 [ i = 0 ]时啥也不干,先让i自增1,达到值为1才开始真正

经典排序算法 - 梳排序Comb sort

经典排序算法 - 梳排序Comb sort 梳排序还是基于冒泡排序,与冒泡不同的是,梳排序比较的是固定距离处的数的比较和交换,类似希尔那样 这个固定距离是待排数组长度除以1.3得到近似值,下次则以上次得到的近似值再除以1.3,直到距离小至3时,以1递减 不太好描述,还是看例子吧 假设待数组[8 4 3 7 6 5 2 1] 待排数组长度为8,而8÷1.3=6,则比较8和2,4和1,并做交换 [8 4 3 7 6 5 2 1] [8 4 3 7 6 5 2 1] 交换后的结果为 [2 1 3 7

(转载)经典排序算法-希尔排序

经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第一块希尔排序介绍 准备待排数组[6 2 4 1 5 9] 首先需要选取关键字,例如关键是3和1(第一步分成三组,第二步分成一组),那么待排数组分成了以下三个虚拟组: [6 1]一组 [2 5]二组 [4 9]三组 看仔细啊,不是临近的两个数字分组,而是3(分成了三组)的倍数的数字分成了一组, 就是每

经典排序算法 - 图书馆排序(Library Sort)

经典排序算法 - 图书馆排序(Library Sort) 思路简介,大概意思是说,排列图书时,如果在每本书之间留一定的空隙,那么在进行插入时就有可能会少移动一些书,说白了就是在插入排序的基础上,给书与书之间留一定的空隙,这个空隙越大,需要移动的书就越少,这是它的思路,用空间换时间 看红线标的那句话知道,这个空隙留多大,你自己定 图书馆排序的关键是分配空间,分配完空间后直接使用插入排序即可 进行空间分配的过程 这个我实在是找不到相关的资料,没准就是平均分配嘞 进行插入排序的过程 举例待排数组[ 0