龙空技术网

快速排序——一种不稳定的排序算法,用C是这样实现的!

高校孟小阿 806

前言:

此刻大家对“降序算法c语言”大概比较着重,朋友们都需要学习一些“降序算法c语言”的相关内容。那么小编同时在网上搜集了一些对于“降序算法c语言””的相关资讯,希望咱们能喜欢,大家一起来了解一下吧!

快速排序,平均时间复杂度O(nlogn),这也是它成为知名度极高的排序算法的一大重要原因。

思想

首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,然后再在关键数据左右部分中各选取一个数据作为关键数据,再将这左右部分重复上次操作......直至排序完成。

不稳定原因:多个相同的值的相对位置也许会在算法结束时产生变动。

代码实现(升序)

快速排序算法函数(顺序表,0,元素个数-1,升序传入1降序传入0)——>变量i赋值左端下标,变量j赋值右端下标,节点变量temp记录包含关键数据的节点——>循环(左端下标变量值不等于右端下标变量值)——>内循环1(元素没比较完且数据值大于关键数据值)右端下标左移——>如果右端某个数据值大于关键数据且元素没有比较完,则将i所标记的元素与j所标记的元素对换(将比关键数据小的值放置到左边)——>右边类似......——>顺序表中间数据赋值为关键数据——>递归左快排——>递归右快排

效果

3000随机数

快速排序用时1ms

大家有兴趣可以看看之前小阿写的冒泡、双向冒泡、直接选择排序对3000随机数排序所用时间,虽然数据值不同,但从中也能体会出快排的强大!

标签: #降序算法c语言