千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

十大经典排序算法:冒选插(n^2),快堆希归(n*logn),桶计基(n)。
(升序排序)
冒泡排序:从第1个位置依次与第2,3....n进行比较,大就往后放,小就不变;接着从第2个位置开始依次与第3,4,...n进行比较,大就往后放,小就不变;依次类推。
选择排序:第一次:从第1 位开始遍历数组,找到数组中的最小值,与数组的第1位进行交换;第二次:从第2位开始遍历数组,找到数组中的最小值,与数组的第2位进行交换;依次类推。
插入排序:选择数组中的前两个数作为一个基准(有序),从第3个开始逆序遍历数组,将其插入到有序数组中,使插入后的数组依然有序。依次类推。
快速排序:(冒泡排序的改良)选出一个基准(pivot)(默认为数组无序时的第一个)然后遍历数组,将比基准小的数和比基准大的数分开(基准放到属于它的有序位置上),然后再从比上一个基准小(大)的数中分别重新选择一个基准,重复上一轮的遍历操作。
堆排序:类似于完全二叉树
希尔排序:(插入排序的改良)例如:当数组长度为10时,gap=10/2=5,第1位和第6位为一组,第2位和第7位为一组,第3位和第8位为一组,第4位和第9位为一组,第5位和第10位为一组。将较小的数据放在前,较大的数据放在后。然后gap=2,第1、3、5、7、9位为一组,第2、4、6、8、10位为一组,两两比较,小的在前大的在后。然后gap=1,依次比较,小的在前,大的在后。
归并排序:数组数据两两比较,四四比较,八八比较,......直到数组数据全部一起比较,小的在前,大的在后。
桶排序:定义一个区间大小(桶),如:10个区间大小,0-9,10-19.....,然后在桶中进行排序,然后依次输出
计数排序:(数组中的数比较集中)用另一个数组去记录原数组中每个元素(有序记录)出现的次数,然后用第二个数组来依次输出。
基数排序:数组中个位相同的放一起,然后十位相同的放一起,.....,最后依次放入原数组中。
排序的目的是为了查找。