快速排序算法,并输出每一轮后数据位置的交换

2024-03-10 03:48

本文主要是介绍快速排序算法,并输出每一轮后数据位置的交换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

快速排序算法

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20//顺序表长度
typedef int KeyType;
typedef struct
{KeyType Key;
}RcdType;
typedef struct
{RcdType r[MAXSIZE+1];int length;
}SqList;
void swap(RcdType &r1,RcdType &r2)
{RcdType temp=r1;r1=r2;r2=temp;
}
void InitList(SqList &L)
{int len;printf("顺序表长度为:\t");scanf("%d",&len);L.length=len;for(int i=1;i<=L.length;i++){printf("第%d个元素为:\t",i);scanf(" %d",&L.r[i].Key);}
}
void ShowList(SqList L)
{for(int i=1;i<=L.length;i++){printf("%d\t",L.r[i].Key);}printf("\n");
}
int Partition(SqList &L,int low,int high)
{KeyType pivotKey=L.r[low].Key;while(low<high){while(low<high&&L.r[high].Key>pivotKey) high--;{swap(L.r[low],L.r[high]);printf("%d<--->%d\t",low,high);}while(low<high&&L.r[low].Key<pivotKey) low++;{swap(L.r[low],L.r[high]);printf("%d<--->%d\t",low,high);}}printf("此趟排序后的序列为:\n");ShowList(L);return low;
}
void Qsort(SqList &L,int low,int high)
{if(low<high){KeyType pivotKey=Partition(L,low,high);Qsort(L,low,pivotKey-1);Qsort(L,pivotKey+1,high);}
}
void QuickSort(SqList &L)
{Qsort(L,1,L.length);
}
int main()
{SqList L;InitList(L);QuickSort(L);printf("最终排序为:\n");ShowList(L);return 0;
}

运行结果:
在这里插入图片描述

这篇关于快速排序算法,并输出每一轮后数据位置的交换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

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

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

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

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

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

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

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

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