常见的四种排序算法

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

相关文章

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同