在linux下用C++编写快速排序(一)

由于之前一直在看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就可以看到结果了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值