快速排序遇到的小问题
2015-09-20 15:31
162 查看
代码如下:
#include<stdio.h>
#define N 10
void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);
int main(void)
{
int a
, i;
printf("Enter %d numbers to be sorted:",N);
for (i = 0; i < N; i++)
scanf("%d",&a[i]);
quicksort(a, 0, N - 1);
printf("In sortrd order:");
for (i = 0; i < N; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void quicksort(int a[], int low, int high)
{
int middle;
if(low >= high) return; //(1)关于这个return的返回问题,它会返回一个什么值呢
middle = split(a, low, high);
quicksort(a, low, middle - 1);
quicksort(a, middle + 1, high);
}
int split(int a[], int low, int high)
{
int part_element = a[low];
while(1){
while(low < high && part_element < a[high])
high--;
if(low >= high) break;
a[low++] = a[high];
while(low < high && a[low] <= part_element)
low++;
if(low >= high) break;
a[high--] = a[low];
}
a[high] = part_element;
return high;
}
#include<stdio.h>
#define N 10
void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);
int main(void)
{
int a
, i;
printf("Enter %d numbers to be sorted:",N);
for (i = 0; i < N; i++)
scanf("%d",&a[i]);
quicksort(a, 0, N - 1);
printf("In sortrd order:");
for (i = 0; i < N; i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void quicksort(int a[], int low, int high)
{
int middle;
if(low >= high) return; //(1)关于这个return的返回问题,它会返回一个什么值呢
middle = split(a, low, high);
quicksort(a, low, middle - 1);
quicksort(a, middle + 1, high);
}
int split(int a[], int low, int high)
{
int part_element = a[low];
while(1){
while(low < high && part_element < a[high])
high--;
if(low >= high) break;
a[low++] = a[high];
while(low < high && a[low] <= part_element)
low++;
if(low >= high) break;
a[high--] = a[low];
}
a[high] = part_element;
return high;
}
相关文章推荐
- Java之voliate, synchronized, AtomicInteger使用
- boost::filesystem指南
- CXF WebService整合Spring
- build linux kernel的错误
- java与javac命令的功用
- Linux Golang安装与环境变量设置
- VC中的stdafx.h简介(原理及作用)
- UVa1585——Score
- 【动态规划】leetcode - Maximal Square
- git基础
- 查找服务器变慢的方法
- 第3周项目4(1)——顺序表应用
- java中自定义的类名不能与java包里面的类名一样
- hadoop安装笔记
- Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的参数理解
- teambition/tower/team@osc/worktile团队协作工具价格比较
- 由C++ assign()函数引出的一个问题
- C++学习计划
- java垃圾回收算法
- crazyflie2.0使用北通游戏手柄控制thrust,roll,pitch和yaw