排序算法(待更新)

各大排序算法特点与总结(更新ing) 数据结构各排序算法总结概括算法分类交换排序冒泡排序(Bubble Sort)快速排序(Bubble Sort)插入排序(Insertion Sort)直接插入排序希尔排序选择排序(Selection Sort)直接选择排序堆排序归并排序(Merge Sort)基数排序(Radix Sort)(桶子法)计数排序(Counting Sort)桶排序(Bucket Sort) 算法分类 十种常见排序算法可以分类两大类别:比较类排序和非比较类排序。 交换排序 冒泡排序(Bubble Sort) 重复地遍历要排序的序 阅读详情

1、Bubbling sort

#include <iostream>
#include <ctime>

using namespace std;

void bubbleSort(int iarray[], int n)
{
	bool flag = false;
	for(int i=0; i<n-1&&!flag; ++i)
	{
		for(int j=i+1; j<n; ++j)
		{
			if(iarray[i]>iarray[j])
			{
				int tmp = iarray[i];
				iarray[i] = iarray[j];
				iarray[j] = tmp;
			}
		}
	}
}

int main()
{
	int iarray[10];
	srand(time(NULL));
	for(int i=0; i<10; ++i)
	{
		iarray[i] = rand()%100;
		cout << iarray[i] << " ";
	}
	cout << endl;

	bubbleSort(iarray, 10);

	for(int i=0; i<10; ++i)
	{
		cout << iarray[i] << " ";
	}
	cout << endl;

	system("pause");
	return 0;
}

2、quick sort

#include <iostream>
#include <ctime>

using namespace std;

const int ARRAY_LEN = 100;
int iarray[ARRAY_LEN];

int divide(int low, int high)
{
	if(low>=high)return -1;

	int pvoit = iarray[low];
	while (low<high)
	{
		while (iarray[high]>=pvoit&&low<high)
		{
			high--;
		}
		if(low<high)
		{
			iarray[low] = iarray[high];
			low++;
		}
		while (iarray[low]<=pvoit&&low<high)
		{
			low++;
		}
		if(low<high)
		{
			iarray[high] = iarray[low];
			high--;
		}
	}

	iarray[low] = pvoit;

	return low;
}

void myQsort(int low, int high)
{
	int mid = divide(low, high);
	if(mid!=-1)
	{
		myQsort(low, mid-1);
		myQsort(mid+1, high);
	}
}

int main()
{
	srand(time(NULL));

	for(int i=0; i<20; ++i)
	{
		iarray[i] = rand()%100;
		cout << iarray[i] << " ";
	}
	cout << endl;
	myQsort(0, 19);

	for(int i=0; i<20; ++i)
	{
		cout << iarray[i] << " ";
	}
	cout << endl;

	system("pause");
	return 0;
}

3、HeapSort

//第一步:建立大顶堆,从最后一个非叶子节点按照从右到左从下到上的顺序逐步调整当前子树为大顶堆直到根节点
//第二步:移除大顶推的顶部最大元素,同时把最后一个叶节点移到根的位置,此时大顶堆可能遭到破坏需要调整
//第三步:从堆得顶部(根节点)向下调整堆使得每棵子树也符合大顶堆的要求
//第三步:重复二三步骤直到仅剩一个元素排序完成
#include <iostream>

using namespace std;

void HeapAdjust(int array[], int cur, int size)//从上向下调整
{
	int lchild = 2*cur;
	int rchild = 2*cur+1;

	int maxIndex = cur;
	if(lchild<=size&&array[lchild]>array[maxIndex])
	{
		maxIndex = lchild;
	}
	if(rchild<=size&&array[rchild]>array[maxIndex])
	{
		maxIndex = rchild;
	}

	if(cur!=maxIndex)
	{
		swap(array[cur], array[maxIndex]);
		HeapAdjust(array, maxIndex, size);
	}
}

void BuildMaxHeap(int array[], int size)//从下向上调整
{
	for(int i=size/2; i>0; --i)
	{
		HeapAdjust(array, i, size);
	}
}

void HeapSort(int array[], int size)
{
	BuildMaxHeap(array, size);
	for(int i=size; i>1; --i)
	{
		swap(array[i], array[1]);
		HeapAdjust(array, 1, i-1);
	}
}

int main()
{
	int array[]={0,6,2,8,10,24,12,46,74,23};
	int size = 9;

	HeapSort(array, size);

	for(int i=1; i<=size; ++i)
	{
		cout << array[i] << " ";
	}
	cout << endl;

	system("pause");
	return 0;
}

堆排序应用:优先队列(最大优先队列用于作业调度,最小优先队列用于基于事件驱动的模拟器(以时间为关键字))

最大优先队列代码示例:

#include <iostream>

using namespace std;

void HeapAdjust(int array[], int cur, int size)//从上向下调整
{
	int lchild = 2*cur;
	int rchild = 2*cur+1;

	int maxIndex = cur;
	if(lchild<=size&&array[lchild]>array[maxIndex])
	{
		maxIndex = lchild;
	}
	if(rchild<=size&&array[rchild]>array[maxIndex])
	{
		maxIndex = rchild;
	}

	if(cur!=maxIndex)
	{
		swap(array[cur], array[maxIndex]);
		HeapAdjust(array, maxIndex, size);
	}
}

void BuildMaxHeap(int array[], int& size)//从下向上调整
{
	for(int i=size/2; i>0; --i)
	{
		HeapAdjust(array, i, size);
	}
}

int HeapMaximum(int array[])//获取队列最大值
{
	return array[1];
}

int HeapExtractMax(int array[], int& size)//从队列中取出最大值
{
	if(size<1)
		return -1;

	int maxVal = array[1];

	array[1] = array[size];
	size -= 1;
	HeapAdjust(array, 1, size);
   
	return maxVal;
}

void HeapIncreaseKey(int array[], int i, int key)//增加队列中某一元素的值
{
	if(key<array[i])
	{
		return;
	}
	array[i] = key;

	while(i>1 && array[i/2]<array[i])
	{
		swap(array[i/2], array[i]);
		i /= 2;
	}
}

void HeapInsert(int array[], int key, int& size)//向队列中插入一个值
{
	size += 1;
	array[size] = -1;
	HeapIncreaseKey(array, size, key);
}

int main()
{
	int array[100]={0,6,2,8,10,24,12,46,74,23};
	int size = 9;

	//第一步建立大顶堆
	BuildMaxHeap(array, size);
 
	//第二步最大优先队列
	cout << HeapMaximum(array) << endl;
	cout << HeapExtractMax(array, size) << endl;
	HeapInsert(array, 100, size);
	cout << HeapMaximum(array) << endl;

	system("pause");
	return 0;
}

4、CountSort(计数排序)

//计数排序:对一定范围内的数排序
//把A中的无序数排序后放在B中(下标从1开始,A中数的范围为0—100)
//C[i]记录A 中<=i的数有多少个,也即对应着A中的i值在B中的位置应该是C[i]处
#include <iostream>

using namespace std;

const int LEN = 100;

int main()
{
	int A[LEN+1] = {-1,1,6,4,8,10,20,12,12,78,45};
	int B[LEN+1];
	int C[LEN+1];
	int size = 10;

	memset(C, 0, sizeof(C));
	for(int i=1; i<=size; ++i)
	{
		C[A[i]]++;
	}
	for(int i=1; i<=LEN; ++i)
	{
		C[i] += C[i-1];
	}
	for(int j=size; j>=1; --j)
	{
		B[C[A[j]]] = A[j];
		C[A[j]]--;           //可能有重复值向前移一位
	}

	for(int i=1; i<=size; ++i)
	{
		cout << B[i] << " ";
	}
	cout << endl;

	system("pause");
	return 0;
}

5、MergeSort(归并排序)

2-路归并排序递归实现 
时间复杂度O(nlgn), 辅助空间O(n) 

#include <iostream>

using namespace std;

void Merge(int tmp[], int res[], int l, int mid, int r)
{
	int i, j, k;
	for(i=l, j=mid+1, k=l; i<=mid&&j<=r;++k)
	{
		if(res[i]<res[j])
		{
			tmp[k] = res[i++];
		}
		else
		{
			tmp[k] = res[j++];
		}
	}
	while(i<=mid)tmp[k++] = res[i++];
	while(j<=r)tmp[k++] = res[j++];

	for(i=l;i<=r; ++i)
	{
		res[i] = tmp[i];
	}
}

void MergeSort(int iarray[], int tmp[], int l, int r)
{
	if(l<r)
	{
		int mid = (l+r)/2;
		MergeSort(iarray, tmp, l, mid);
		MergeSort(iarray, tmp, mid+1, r);

		Merge(tmp, iarray, l, mid, r);
	}
}

int main()
{
	int iarray[10] = {9,8,7,6,5,4,3,2,1,0};
	int tmp[10];
	MergeSort(iarray, tmp, 0, 9);

	for(int i=0; i<10; ++i)
	{
		cout << iarray[i] << " ";
	}
	cout << endl;

	//system("pause");
	return 0;
}
2-路归并排序非递归实现 
时间复杂度O(nlgn), 辅助空间O(n) 

#include <iostream>

using namespace std;

void Merge(int tmp[], int res[], int l, int mid, int r)
{
	int i, j, k;
	for(i=l, j=mid, k=l; i<mid&&j<r;++k)
	{
		if(res[i]<res[j])
		{
			tmp[k] = res[i++];
		}
		else
		{
			tmp[k] = res[j++];
		}
	}
	while(i<mid)tmp[k++] = res[i++];
	while(j<r)tmp[k++] = res[j++];

	for(i=l;i<r; ++i)
	{
		res[i] = tmp[i];
	}
}

int main()
{
	int iarray[10] = {9,8,7,6,5,4,3,2,1,0};
	int tmp[10];
	int num = 10;
	int len = 1;
	
	while(len<num)
	{
		int i=0;
		for(; i+2*len<num; i += 2*len)
		{
			Merge(tmp, iarray, i, i+len, i+2*len);
		}
		if(i+len<num)
		{
			Merge(tmp, iarray, i, i+len, num);
		}
		
		len *= 2;
	}

	for(int i=0; i<10; ++i)
	{
		cout << iarray[i] << " ";
	}
	cout << endl;

	//system("pause");
	return 0;
}


6、RadixSort(基数排序)

基数排序:是多关键字排序,比如先按比较第一个关键字再比较第二个关键字.....
以十进制数为例,十进制每个位上的取值范围为0-9,因此基数为10,我们建立是个链表,先比较个位把个位相同的一次放到相应的链表中(有序),这是一次分配;然后收集从第0个链表到第9个链表依次头接尾连接起来,这是第一趟排序,然后使用这种方法对十位,百位...依次操作最后得到的就是有序序列,以三位数字为例如图:


以下代码没有使用List而是用计数的方法使用数组模拟List。

//基数排序:是多关键字排序,比如先按比较第一个关键字再比较第二个关键字.....
//以十进制数为例,十进制每个位上的取值范围为0-9,因此基数为10,我们建立是个链表,先比较
//个位把个位相同的一次放到相应的链表中(有序),这是一次分配;然后收集从第0个链表到第9个链表
//依次头接尾连接起来,这是第一趟排序,然后使用这种方法对十位,百位...依次操作
//最后得到的就是有序序列
//以下代码没有使用List而是用计数的方法使用数组模拟List。
#include <iostream>

using namespace std;

const int  RADIX_10  = 10;   //基数
const int  KEYNUM_31 = 3;    //关键字个数(此处为数字有多少位)

int GetNumInPos(int num,int pos)
{
	int temp = 1;
	for (int i = 0; i < pos - 1; i++)
		temp *= 10;

	return (num / temp) % 10;
}

void RadixSort(int* pDataArray, int iDataNum)
{
	int *auxiliarySpace[RADIX_10];    //分别为0-9的序列空间
	for (int i = 0; i < 10; i++)
	{
		auxiliarySpace[i] = (int *)malloc(sizeof(int) * (iDataNum + 1));
		auxiliarySpace[i][0] = 0;    //index为0处记录这组数据的个数(严蔚民《数据结构》中使用的的链表实现)
	}

	for (int pos = 1; pos <= KEYNUM_31; pos++)    //从个位开始到最高位(也即从第一个关键字到最后一个关键字)
	{
		for (int i = 0; i < iDataNum; i++)    //分配过程
		{
			int num = GetNumInPos(pDataArray[i], pos);
			int index = ++auxiliarySpace[num][0];
			auxiliarySpace[num][index] = pDataArray[i];
		}

		for (int i = 0, j =0; i < RADIX_10; i++)    //收集
		{
			for (int k = 1; k <= auxiliarySpace[i][0]; k++)
				pDataArray[j++] = auxiliarySpace[i][k];
			auxiliarySpace[i][0] = 0;    
		}
	}
}

int main()
{
	int iarray[] = {521,310,72,373,15,546,385,856,187,147};
	RadixSort(iarray, 10);
	for(int i=0; i < sizeof(iarray)/sizeof(iarray[0]); ++i)
	{
		cout << iarray[i] << " ";
	}
	cout << endl;
	system("pause");
	return 0;
}


注:待更新分析总结

TMS320F28377D/F28379D CAN通信避坑指南:从寄存器配置到中断处理的完整流程 本文详细解析了TMS320F28377D/F28379D在CAN通信开发中的关键技术与避坑指南,涵盖时钟配置、寄存器初始化、中断处理等完整流程。针对工业控制和汽车电子应用,提供了实用的优化技巧和错误诊断方法,帮助开发者高效实现稳定可靠的CAN通信。 阅读详情

相关推荐

投研必备工具:Wind(万得)数据库快速入门

Wind数据库对于金融从业者来说是必不可少的一个软件,本文主要介绍了股票和债券的信息查找,帮助后续对数据进行分析,开始学习吧!

weixin_56581108的博客 10万+

【C++】const详解

常量概念是为了使程序员能够在变和不变之间画一条界限。给C++程序设计项目中提供了安全性和可控性。——《C++编程思想》 在编程中要尽可能多的使用const,这样可以获得编译器的帮助,以便写出健壮性的代码。  define宏定义,可以将常量赋值给一个变量,但由于在编译过程中只是简单的进行文本替换,并不会对赋值语句进行检查,因此会存在很多潜在的威胁,一旦定义出错,整个调用过程也讲出错。所以C+...

Twinkle 1467

《最游记》游戏开发全栈指南:从源码解析到实战部署

本文提供了一份详尽的《最游记》游戏源码全栈开发指南。文章深入解析了这款3D玄幻网游的完整源码结构,涵盖客户端、服务端、引擎和工具链,并提供了从环境搭建、核心模块解析到实战修改与部署的完整流程。对于希望深入理解MMORPG架构的开发者而言,这份指南是宝贵的实战资源。

weixin_28363123的博客 75

c++中指针和数组名的关系& const修饰指针的三种情况

1.c++中数组和指针的关系 由于数组变量就是指针,因此也可将用于指针的解除引用运算符(*)用于数组。同样,可将数组运算符([])用于指针; #include <iostream> using namespace std; int main() { const int ARRAY_LEN=5; int MyNumbers[ARRAY_LEN]={22,2,3,45,6}; ...

weixin_37076955的博客 381

别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)

本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。

weixin_42523711的博客 271

PubMedBERT:生物医学NLP中的垂直领域预训练实践与性能突破

本文深入探讨了PubMedBERT在生物医学NLP领域的应用与性能突破。作为专为生物医学文本设计的预训练模型,PubMedBERT通过全词掩码策略和BLURB基准测试,显著提升了命名实体识别、关系抽取等任务的准确率。文章还提供了PubMedBERT的实战应用案例和代码示例,展示了其在医学文献检索和电子病历结构化中的卓越表现。

kite3的博客 288

排序算法总结(不断更新中)

排序算法总结(不断更新中)排序算法总结冒泡排序算法描述代码选择排序插入排序快速排序归并排序 排序算法总结 这篇博客我将会总结排序算法,并不断更新,是一个复习排序算法的过程 复杂度: 相关概念: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 冒泡排

解忧小屋 331

C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过scanf("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan

weixin_49764077的博客 8722

排序算法总结--更新中

一、 选择排序 思想:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 伪代码: ...

jindayue的博客 157

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1069

YOLOv12涨点改进 | 全网首发,Conv改进篇 | CVPR 2025 | YOLOv12引入FDConv频率动态卷积,含A2C2f_FDConv二次创新模块,能够捕捉更加丰富和复杂的特征信息

本文提出了一种改进YOLOv12目标检测模型的方法——频率动态卷积(FDConv)。FDConv通过增强卷积核的频率响应多样性,使模型能够更好地处理不同频率信息,从而提高检测精度。该方法包含三个关键组件:傅里叶离散权重(FDW)实现频率分组,核空间调制(KSM)动态调整频率响应,以及频率带调制(FBM)进行频域调节。实验结果表明,FDConv能以较少的参数增长(仅增加3.6M)显著提升模型性能,在目标检测、实例分割等任务中优于传统动态卷积方法。该方法可灵活集成到ResNet、ConvNeXt等多种架构中。

Ai缝合怪、助力小伙伴高效发论文 421

各种排序算法更新

折半插入排序 public static void insertHaltSort(int[] array) { int tem,j,i,l,h,mid;//i指的是无序区的第一个元素,j指的是有序区的最后一个元素 for (i = 1; i < array.length; i++) { tem=array[i]; j=i-1;l=0;h=j; while(l&l...

编码日常 247

芒果YOLO11改进106:检测头篇DynamicHead动态检测头:基于DynamicHead,二次原创提出SATNeXt模块,提出全新的动态DynamicSatDetect

检测头篇DynamicHead动态检测头:基于DynamicHead,二次原创提出SATNeXt模块,提出全新的动态DynamicSatDetect

包括YOLOv5、YOLOv7、YOLOv8等模型改进 774

十大排序算法总结更新

目录十大排序算法总结一、冒泡排序二、选择排序归并排序归并排序的实现附录具者类也:排序算法公用(交换和比较)十大排序算法总结 一、冒泡排序 身世曰:冒泡排序可以誉为程序员跨入算法门槛的第一步,相信大家一定被冒泡排序一直萦绕在耳边。【且听冒泡吟】,冒泡乃排序家族之太上长老,掌门人不为过之。 闻之也:冒泡排序(Bubble Sort),乃计算机科学领域排序算法的简简易者。 知其身:它重复地走访过要...

Iamxuefather的博客 129

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java排序算法 【更新ing】

排序算法,是指将一组或多组数据通过特定的算法进行排序处理,使该组数据符合升序或降序,方便对其进行计算和筛选,提高数据处理的效率。排序算法可以在在多种计算机语言中实现,这里我们通过Java来实现几种常见的排序算法。 常见的排序算法冒泡排序选择排序插入排序希尔排序快速排序基数排序归并排序 冒泡排序 冒泡排序是一种比较简单的排序算法,其原理就是从头到尾比较数组中前后两个元素的大小,并根据大小来调换元素的位置,最终按照升序或降序为数组中的元素排序。 上图是冒泡排序的一个执行逻辑。 首先,我们要遍历数组。假设数组中

qq_42592994的博客 243

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

排序算法,更新中

排序算法 BUB 冒泡排序 原理:从第一个数开始,设其下标i=0,和后一个位置数相比较,若左侧值>右侧值,两数交换位置,i下标右移,再将i下标指向的数与右侧数相比较,直到所有元素左侧值都小于右侧值。 算法: do   boolean flag=false;   从位置1到最后一个未排过序的元素     若左侧元素>右侧元素       两元素交换位置       ...

qq_45512210的博客 138

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

排序算法(更新中)

排序算法

weixin_43831365的博客 268

排序算法--持续更新

c/c++的排序算法

qq_42425882的博客 239

各种排序算法的实现(更新中)

  这里我只贴出各种排序算法的代码,或者简单的说明,以备日后复习。   今晚又把归并排序和快速排序实现了一遍,不要担心做重复的工作,只有把简答的工作做得很好,那么你才有能力去承担更好的工作。虽然说已经写了好多次了,但是每次都能发现自己的问题。 首先是归并排序,实现过程很简单,但是在最后竟然忘记把malloc的空间给free掉。。这是很危险的事情啊! 还有就是快速排序,快速排序的思想是任意选一个...

weixin_30847271的博客 135

排序算法(正在更新中...)

目录 1、冒泡算法排序 1、冒泡算法排序 具体的算法代码:12_冒泡算法的代码实现.py 冒泡排序的时间复杂度为O(n^2),这种排序算法是稳定的。 优化:有可能在中间的某一步就排好序了,这时就不用再往下执行排序了。 2、选择排序算法 代码实现:07_选择排序法代码实现.py; 选择排序算法的时间复杂度为O(n^2),没有办法进行优化,因为要确定元素是最小的,这种排...

xiaotian127的博客 310

排序算法总结(长期更新)

1.最基础的排序算法 冒泡排序 思想:每次使用交换的方式将剩余元素中较大的元素放到一端,直到剩余元素为0的时候排序结束。 #include<stdio.h> int main() { int a[5] = {1, 3, 5, 10, 7}; printf("排序前:"); for (int i = 0; i < 5; i++) print...

没有胡子的猫Asimov 243

排序算法待更新

1.冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了比较上次就排到后面的。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 2.选择排序 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 在选取第二个,与剩余未排序元素中最小(大)元素交换 选取第三个 第四个… 3.插入排序 类似于把扑克牌按序排好 4.希尔排

MinisterZ的博客 89

排序算法(持续更新中)

本文将带你快速掌握常见的排序算法,让你在面试中脱颖而出。

m0_67942524的博客 302

排序算法介绍(更新中)

排序算法介绍 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、快速排序 六、归并排序 七、基数排序 八、排序算法总结

KEEP 244

排序算法(持续更新...)

文章目录选择排序 选择排序

weixin_46365033的博客 407
上一篇: Linux常见问题(CentOS)
下一篇: 常见小问题(待更新)
知行且执行
博客等级 码龄14年 38粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值