C语言之通过冒泡排序浅谈编程思想
写这篇博文的目的是想起到抛砖引玉的作用,还请大牛们留下一些先进的思想,让小菜学习一下。下面入正题。
复习C语言怎么能少的了冒泡呢,记得刚学C语言那会,感觉冒泡排序真的太复杂了,理解不大了,嗯!还是当时的功底不够啊。当时一些冒泡都头疼,感觉这么多的循环(哈哈!!其实也就俩,当时就是感觉太复杂)。现在再写冒泡排序,感觉自己当时学C语言的时候是不是太笨了呢。
仔细想想,之前写冒泡之所以感觉到难是没有真正的理解冒泡的思想,就硬着头皮写,结果可以想象,是以失败而告终的。现在写代码也有一段时间了,学的编程语言也有几门了,现在想想编程更多的是一种思想。而编程语言就是一种工具,如果你有思想了,用什么语言去解决问题都是可以的。编程思想大概就是大家所谓的编程算法吧。在编写东西之前,如果你的思路清晰,目标明确,那么你在写程序的时候也会行云如流水,Bug的数量也会骤减。相反,如果你在编写程序之前,思维混沌,思路模糊,在编写程序的时候会感觉到非常的吃力,Bug自然而然的就回增多的。
在编程之前要明白一个道理,是计算机是非常傻的,但计算机不笨。计算机之所以傻,就是你让他干嘛他干嘛。从而想一下,如果你本身的思路就不明确,不清晰,那么有如何去给计算机下指令呢?
下面就以冒泡排序为例,同时复习一下简单的冒泡排序。
写冒泡排序我本人喜欢从后往前把小的冒出来,当然了也可以把大的从前往后冒,当然了这两种方法都ok了。其实冒泡排序这个名字起的时非常的形象生动的。排序的过程就像是一个个水泡从水底往上冒。每排一次序就有一个较小的数冒出来。
代码如下:
//冒泡排序 void sort(int array[], int length) { //交换时使用的临时变量 int temp = 0; //循环数据 for (int i = 0; i < length; i++) { //从后往前冒 for (int j = length - 1; j > i; j--) { //符合条件的交换 if (array[j] < array[j-1]) { temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; } } } //调用封装好的数组输出函数 print_array(array, length); }