排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率。
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。
排序就是把集合中的元素按照一定的次序排序在一起。一般来说有升序排列和降序排列2种排序,在算法中有8中基本排序:
冒泡排序;2. 选择排序;3. 插入排序;4. 希尔排序;
归并排序;6. 快速排序;7. 基数排序;8. 堆排序(涉及到二叉树)
稳定:在数组中有a=b,且a在b的前面,当排序后a仍然在b的前面
不稳定:在数组中有a=b,且a在b的前面,当排序后a可能跑到b的后面
内排序:所有排序操作都在内存中完成
外排序:因数据量过大,将数据存放在磁盘中,排序操作需通过磁盘和内存的数据传输
1. 冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
代码实现
//冒泡排序
public static void bubbleSort(int[] array){
int temp = 0;//临时变量,用于交换
//循环冒泡排序,排序次数为array.length-1次
for (int i=0; i<array.length-1; i++){
//遍历数组,因为要与后一个位置的数据比较,所以i要小于array.length-1,否则会报下标超出范围异常
//又因为每进行一次排序,就会确定一个位置,所以比较次数为array.length-1-i
for (int j=0; j<array.length-1-i; j++){
if (array[j] > array[j+1]){//相邻俩个位置判断大小
//如果array[j] > array[j+1],则进行交换
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}