各种排序的总结

希尔排序

⭐希尔排序,下标从1开始,0用于插入排序做哨兵

⭐希尔排序不稳定!


冒泡排序

第二趟,前边经过一系列对比后,走到下边这一步:

同理,第三趟也是

⭐冒泡排序每次交换都需要移动元素3次

⭐冒泡排序,每一趟都会使一个最大/最小元素在它的最终位置。


快速排序

⭐基准元素在最终位置,基准元素左边的都比它小,右边的都比它大,

⭐:下标从0开始

排序过程:

第一趟:

左边:

右边

快排代码:

cpp 复制代码
using namespace std;
#include<iostream>
#include<math.h>
const int N = 100010;
int n;

int a[N];
void quick_sort(int a[], int left, int right)
{
	if (left >= right)
	{
		return;
	}
	int x = a[left + right>>1], i = left-1, j = right+1;
	//相当于除以2但比除以2运算时间短

	while (i < j)
	{
		do i++; while (a[i] < x);
		do j--; while (a[j] > x);
		if (i < j)//交换
		{
			swap(a[i], a[j]);
		}
	}
	quick_sort(a, left, j);
	quick_sort(a, j + 1, right);

}
int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	quick_sort(a, 0, n - 1);
	for (int i = 0; i < n; i++)
	{
		cout << a[i] << " ";

	}
	return 0;
}

简单选择排序

选择排序:每⼀趟在待排序元素中选取关键字最⼩(或最⼤)的元素加⼊有序⼦序列


堆排序

堆的插入和删除

删除元素:用最后一个元素代替


归并排序


基数排序

总结:

相关推荐
临沂堇8 分钟前
CCF刷题计划——训练计划(反向拓扑排序)
数据结构·c++·算法·拓扑·ccf
铁匠匠匠13 分钟前
【C总集篇】第八章 数组和指针
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
咕咕吖19 分钟前
二叉树的层序遍历(c)
数据结构·算法
王哈哈嘻嘻噜噜23 分钟前
c语言中“函数指针”
java·c语言·数据结构
“JB...One”1 小时前
openssl-AES-128-CTR加解密结构体
linux·数据结构·算法·ssl
Mike!1 小时前
C++进阶 set和map讲解
java·开发语言·数据结构·c++·set·map·cpp
白帽黑客cst4 小时前
网络安全(黑客技术) 最新三个月学习计划
网络·数据结构·windows·学习·安全·web安全·网络安全
疑惑的杰瑞4 小时前
[数据结构]算法复杂度详解
c语言·数据结构·算法
大油头儿4 小时前
排序算法-选择排序
数据结构·算法·排序算法
.别止步春天.4 小时前
Python中lambda表达式的使用——完整通透版
数据结构·python·算法