黑马程序员--java基础--排序算法


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


一类:插入排序

插入排序法:
基本思想:输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,
该数组排序完毕。
希尔排序法:
基本思想:属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法(初次取序列的一半为增量,以后每次减半,直到增量为1)


二类:选择排序
选择排序:
基本思想:第1趟简单选择排序是指通过n-1次关键字的比较,从n个记录中选出关键字最小的记录(记录),并和第1个记录进行交换。共需进行n-1趟比较,直到
所有记录排序完成为止。
堆排序:
基本思想:堆排序是一树形选择排序,在排序过程中,将R[1..N]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关
系来选择最小的元素。


三类:交换排序
冒泡排序法:
基本思想:依次比较相邻两个数,将小数放在下面,大数放在上面。,即:首先比较第一个和第二个数,将小数置放下,大数放在上,循环依次,就可以找到最
小值,放于末尾,再次循环,将数列排好。
快速排序法
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别
进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


四类:归并排序
基本思想:1将n个元素分成两个含n/2元素的子序列;2用MS将两个子序列递归排序(最后可以将整个原序列分解成n个子序列);3合并两个已排序好的序列。


五类:基数排序

基本思想:根据数字的性质来逐个根据个位数、十位数、百位数分类求得进行分类。


快速排序是一个效率较高的算法,在此示例一下快速排序的算法。

public class Test01 {
	
	public static void main(String[] args) 
	{
		int[] arr={43,11,28,14,63,18,87,23,73};
		quickSort s=new quickSort();
		s.arr=arr;
		s.Display();									//输出原数组
		s.sort(0,s.arr.length-1);						//对数组进行排序
		s.Display();									//输出排序后的数组
	}
	

}
class quickSort{
	int[] arr;
	int partition(int sortArray[],int low,int hight)
	{
		int key = sortArray[low];						//定义关键数据
		while(low=key)
				hight--;
			sortArray[low] = sortArray[hight];			//将较小的值放在前端
			while(low


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


你可能感兴趣的:(黑马-java学习)