由于之前一直在看html和Qt,把最开始的一些忘记了,为什么选择在linux下用c++写快速排序呢?第一,熟悉一下linux的代码;第二,帮自己温习一下c++程序;第三,写快速排序的话可以将其分成几个文件,然后用mkfile 以及可以用gdb调试,哈哈,想一想各方面也是挺好的。之所以记下来是怕自己以后忘了
好了,最基本的,在文件夹下建立一个文件,名为quicksort ,这个命令当然是用mkdir quicksort,然后进入该文件夹,vi quicksort.h,编写头文件,在编写头文件时一定不能忘了#ifndef哦,因为编写这些是为了巩固自己复习所以我在.h文件里面用了类
1 #ifndef _QUICK_SORT__
2 #define _QUICK_SORT_
3
4 #include <iostream>
5
6 using namespace std; //注意一定要添加哦,因为在c++里有很多库,系统不确定我们要找的在哪个库,所以要添这句
7 class Quick{
8 public:
9 void aquicksort(int a[ ],int right,int left); //定义了一个成员函数
10 };
11
12 #endif
之后,我们对该函数做定义,嗯,在同一个文件夹里面加一个文件叫做quicsort.cpp文件,里面写快速排序。这里扩展一下快速排序的定义。 引用百度百科基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
1 #include "quicksort.h"
2
3 void Quick::aquicksort(int a[ ],int left,int right)
4 {
5 if(left>=right){
6
7 return ;
8 }
9 int first = left;
10 int last = right;
11 int key = a[first];
12 while(first<last)
13 {
14 while(first<last&&a[last]>=key)
15 {
16 last--;
17 }
18 a[first] = a[last];
19 while(first<last&&a[first]<=key)
20 {
21 first++;
22 }
23 a[last] = a[first];
24 }
25 a[last] = key;
26 aquicksort(a,left,last-1);
27 aquicksort(a,last+1,right);
28 }
嗯,我们现在写了main函数验证一下就可以了
注意在main里引用类里定义的成员变量要先new一下:
main.cpp的代码入下: 1 #include "quicksort.h"
2
3
4 int main()
5 {
6 Quick* quicksort = new Quick();
7 int a[ ]={34,2,5,76,8,7,4,35};
8 quicksort->aquicksort(a,0,7);
9 for(int i=0;i<8;i++)
10 {
11 cout<<a[i] <<endl;
12 }
13
14 return 0;
15 }
大功告成,回到上级目录,gcc main.cpp quicksort.cpp 生成a.out,然后运行./a.out就可以看到结果了