常见的四种排序算法

2024-09-07 08:08
文章标签 算法 常见 排序 四种

本文主要是介绍常见的四种排序算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

常见的四种排序算法,至于其原理我就不在这里描述了,不懂原理的可以自己去百度,下面直接给出代码。

void BubbleSort(int a[], int size, int order) //order为1代表升序,冒泡排序算法

{
int i, j;
for(i=0;i<size-1;i++)
{
for(j=0;j<size-i-1;j++)
{
if((order)?(a[j]>a[j+1]):(a[j]<a[j+1]))
{
a[j]=a[j]^a[j+1];
a[j+1]=a[j]^a[j+1];
a[j]=a[j]^a[j+1];
}
}
}
}




void SelectSort(int a[], int size, int order) //order为1代表升序,选择排序算法
{
int i, j, k;
for(i=0;i<size-1;i++)
{
k=i;
for(j=i+1;j<size;j++)
{
if((order)?(a[k]>a[j]):(a[k]<a[j])) k=j;
}

if(k!=i)
{
a[k]=a[k]^a[i];
a[i]=a[k]^a[i];
a[k]=a[k]^a[i];
}
}
}




void InsertSort(int a[], int size, int order) //order为1代表升序,插入排序算法
{
int i, j, k;
for(i=1;i<size;i++)
{
k=a[i];
j=i-1;
while(((order)?(a[j]>k):(a[j]<k)) && j>=0)
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
}




void QuickSort(int a[], int size, int order) //order为1代表升序,快速排序算法
{
int i,j,k;
if(size<=1) return;


i=0;
j=size-1;
k=a[i];


while(i!=j)
{
while(i!=j && ((order)?(a[j]>=k):(a[j]<=k)))
j--;
a[i]=a[j];
while(i!=j && ((order)?(a[i]<=k):(a[i]>=k)))
i++;
a[j]=a[i];
}


a[i]=k;
QuickSort(a,i,1);
QuickSort(a+i+1,size-i-1,1);

}


以上四种算法经过多次验证,不存在问题。当然还有其他的排序算法,后序用到了在补上。

这篇关于常见的四种排序算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144526

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Java捕获ThreadPoolExecutor内部线程异常的四种方法

《Java捕获ThreadPoolExecutor内部线程异常的四种方法》这篇文章主要为大家详细介绍了Java捕获ThreadPoolExecutor内部线程异常的四种方法,文中的示例代码讲解详细,感... 目录方案 1方案 2方案 3方案 4结论方案 1使用 execute + try-catch 记录

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A