java中常见的几种算法

第一种:冒泡排序算法

首先呢,先看下它的原理

由此可以看出,总数据长度为N,N个数字要完成排序,总共要进行N-1趟排序,第i趟的排序次数为(N-i)次;

java中最常见的方法是双层for循环进行排序。

外层控制总共要进行的趟数,内层控制第几趟的数据内部的排序次数。

	public static void main(String[] args) {
		int a[] = {6,3,8,2,9,1};
		for (int i = 0; i < a.length-1; i++) {
			for (int j = 0; j < a.length-1-i; j++) {
				if(a[j]>a[j+1]){
					int temp = a[j];
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
		//排序后的数组顺序为
		for (int res : a) {
			System.out.print(" "+res);
		}
	}

ps:由于数组外层是从0开始遍历的,所以第二趟的时候i为1,第二趟的排次数为6-(1-1),第三趟i为2,第三趟的排序次数为6-(2+1)。

第二种:选择排序算法

同理,我们先来看下原理,意思每次从现有数据挑出一个最小的直接放在最前面,第二次再将剩余的数据进行排序,拿出最小的放在最前面,以此类推。

举例:数组 int[] arr={5,2,8,4,9,1};

-------------------------------------------------------

第一趟排序: 原始数据:5  2  8  4  9  1

最小数据1,把1放在首位,也就是1和5互换位置,

排序结果:1  2  8  4  9  5

-------------------------------------------------------

第二趟排序:

第1以外的数据{2  8  4  9  5}进行比较,2最小,

排序结果:1  2  8  4  9  5

-------------------------------------------------------

第三趟排序:

除1、2以外的数据{8  4  9  5}进行比较,4最小,8和4交换

排序结果:1  2  4  8  9  5

------------------------------------------------------- 

第四趟排序:

除第1、2、4以外的其他数据{8  9  5}进行比较,5最小,8和5交换

排序结果:1  2  4  5  9  8

-------------------------------------------------------

第五趟排序:

除第1、2、4、5以外的其他数据{9  8}进行比较,8最小,8和9交换

排序结果:1  2  4  5  8  9

-------------------------------------------------------

由此可以看出,N个数据,要进行N-1趟排序,把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。

外层控制总共要排序的趟数,内层表示要和下标为X的数据比较数组值。

	/**
	 * 排序算法
	 * @param args
	 */
	public static void main(String[] args) {
		int a[] = {6,3,8,2,9,1};
		//外层控制总共要进行排序的趟数
		for (int x = 0; x < a.length-1; x++) {
			//内层表示要和下标为X的数据比较数组值
			for (int y = x+1; y < a.length; y++) {
				if(a[x]>a[y]){
					int temp = a[y];
					a[y] = a[x];
					a[x] = temp;
				}
			}
		}
		//排序后的数组顺序为
		for (int res : a) {
			System.out.print(" "+res);
		}
	}

第二种:插入排序算法1

算法原理:所谓插入排序法乃是将一个数目插入该占据的位置。

所以,有N个数,则要进行N-1趟排序,

猜你喜欢

转载自blog.csdn.net/JJota/article/details/81784835