博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快排实现时候的一个逻辑错误
阅读量:6081 次
发布时间:2019-06-20

本文共 1438 字,大约阅读时间需要 4 分钟。

 

1 #include"header_file.h" 2 using namespace std; 3  4 void swap(int a,int b) 5 { 6     int t; 7     t=a; 8     a=b; 9     b=t;10 }11 12 void quick_sort(int a[],int low,int high)13 {14     15     if(low>=high)16         return;17         18     int first;19     int last;20     first=low;21     last=high;22     23     int x;24     x=a[low];25     26 27     while(low
=x)30 {31 high--;32 } 33 swap(a[low],a[high]);34 35 cout<
<<" "<
<<" low"<<" "<
<
low+1)47 quick_sort(a,low+1,last);48 }49 50 int main(void)51 {52 int a[7]={
4,3,6,7,2,1,5};53 quick_sort(a,0, sizeof(a) / sizeof(a[0]) - 1);54 55 cout<<"test"<

执行程序会发现在算法排序的地方无限循环,想了半天才知道是33和41行的位置,不管while循环是否执行都会执行swap语句。逻辑错误!

只能换种方法,改成大家最常见的那种就好了

1 void quick_sort(int a[],int low,int high) 2 { 3      4     if(low>=high) 5         return; 6          7     int first; 8     int last; 9     first=low;10     last=high;11     12     int x;13     x=a[low];14     15 16     while(low
=x)19 {20 high--;21 } 22 a[low]=a[high];23 24 // cout<
<<" "<
<<" low"<<" "<
<
low+1)39 quick_sort(a,low+1,last);40 }

这里就不是交换了,直接赋值,然后最后给a[low]赋值。

 

很低级的错误

 

转载地址:http://srzwa.baihongyu.com/

你可能感兴趣的文章
Archlinux添加MP3播放器
查看>>
django连接Oracle过程中出现的问题
查看>>
第七周作业——基础
查看>>
tp框架之增删改查
查看>>
TextView改变颜色
查看>>
Android 项目中文件夹作用(res文件夹详细介绍)
查看>>
VC++排序 排序算法比较
查看>>
android studio本地gradle
查看>>
comet 推送消息到客户端
查看>>
Linux下一个进程可以开多少线程
查看>>
小错误汇总
查看>>
docker容器的两类存储
查看>>
从Controller到View(一)
查看>>
关于&、双引号、和单引号的解释
查看>>
LeetCode - Nth Digit
查看>>
background-clip&background-origin
查看>>
js读书笔记(2)
查看>>
修改表数据
查看>>
Web应用的目录结构
查看>>
jdk安装
查看>>