常见排序算法介绍

插入排序(Insertion sorting):将一个数据插入到有序数据中,构成长度加一的新有序数据,适用于少量数据的排序,时间复杂度O(n^2),是稳定的排序方法。
这里写图片描述
选择排序(Selection sorting):每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,知道全部待排序的数据元素排完,是不稳定的排序方法。

堆排序(heap Sort):选择排序的改进。将无序数列构建成一个堆,根据升序、降序需求选择大顶堆或小顶堆;将堆顶元素与末尾元素交换,将最大元素“沉”到数组末端;重新调整结构;重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。

冒泡排序(Bubble sorting):对相邻元素两两比较,顺序相反则进行交换,每走一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。
这里写图片描述

public static void bubbleSort(int[] a) {
for(int i=a.length-1; i>0; i--) { // n-1次扫描
for(int j=0; j<i; j++) { 
if(a[j]>a[j+1]) {
swap(a, j, j+1);
}
}
}
}

private static void swap(int[] a, i, j) {
if(i = j) {
return;
}
int temp = a[i];
a[i] = a[j];
a[j] = a[i];
}

快速排序(Quick sort):对冒泡排序的改进。通过一趟排序将待排数据分割成比选定数据小和大的两部分,再依照此法对两部分数据进行快速排序。
这里写图片描述

归并排序(Merge Sort):采用了分治策略,将已有序的子序列合并,得到完全有序的序列。若将两个有序表合并成一个有序表,称为二路归并。
这里写图片描述

希尔排序(Shell Sort):也称缩小增量排序。把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件分成一组,算法便终止。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anneCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值