iOS面试程序员算法

C语言编程基础入门学习排序算法之快速排序,轻松掌握快排

2018-03-02  本文已影响21人  小辰带你看世界

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的。今天我们介绍下快速排序,简称就是快排。

1.快速排序思想:

快排使用分治法(Divide and conquer)策略,将一个序列分为两个子序列。(快排算法中使用到了递归,对递归不太熟的,可以参考我前一篇文章)。具体步骤如下:

①从数列中挑出一个元素,称为"基准"(Pivot);

②重新排序数列,所有元素比基准小的摆放在最前面,所有元素比基准值大的放在基准的后面(相同的数可以放在任意一边)。在这个分区结束之后,该基准就处于数列的中间位置。如上操作便称为"分区(Partition)"操作。

③递归的把小于基准值元素的子数列和大于基准值的子数列排序。

2.快速排序注意点:

①递归的最底部情形,是数列的大小是0或1,也就是永远都已经被排序好了。

②虽然一直会递归,但是不用担心,这个算法总会结束。毕竟在每次迭代中,至少会把一个元素摆到它最后的位置去。

快排时间复杂度为:O(nLog n);

3.快速排序代码实现:

①数据结构部分:

小编推荐一个学C语言/C++的学习裙【 二六三,六八八,二七六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

②快速排序递归部分:

③寻找"基准"部分:

小编推荐一个学C语言/C++的学习裙【 二六三,六八八,二七六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

④main函数调用:

4.代码实现结果:

小编推荐一个学C语言/C++的学习裙【 二六三,六八八,二七六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

每天进步一点点,每天消化一点点。如果你有更好的想法,欢迎一起交流。如果文章对你有所帮助,点个赞呗。

上一篇下一篇

猜你喜欢

热点阅读