#include <stdio.h>
#include <stdlib.h>
int Index(int *array,int left,int right){//用于得到枢轴的坐标
int temp = 0;
int *flag = &array[left];
//开始时写成了flag = array[left],这是不正确的,因为在下面做交换时,只是数据的交换,而不会将数据写到原来的地址值中去。
//也可以通过随机数产生参考值
while(left < right){
while(array[right] >= *flag && left < right){
right --;
}
while(array[left] <= *flag && left < right){
left ++;
}
if(left < right){
temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
/*下面代码块,交换参考值与索引处的数值,使得做不得数值都小于索引值,右边的数据 都大于索引值*/
temp = array[left];
array[left] = *flag;
*flag = temp;//开始时写成了flag,必须用指针才可以。
return left;
}
void sort(int *array,int left,int right){
int index = 0;
if(left < right){
index = Index(array,left,right);
sort(array,left,index-1);
sort(array,index+1,right);
}
}
int main()//测试驱动
{
int array[]={1,55,69,8,67,4,46,38,5,96,8,4,5,9,4,62,8,7,77,41,11,66};
int i = 0;
sort(array,0,21);
for(;i < 22; i++){
printf("%d\t",array[i]);
}
return 0;
}
分享到:
相关推荐
### 数据结构快速排序算法实现详解 #### 实验目标与背景 快速排序算法是计算机科学领域中一种非常高效且常用的排序算法,由英国计算机科学家托尼·霍尔(Tony Hoare)于1959年提出。它采用分治法策略来实现对数据...
快速排序算法实现 快速排序算法是一种高效的排序算法,基于 Divide and Conquer 策略,通过选择一个基准元素,partition数组,使得左侧元素小于基准,右侧元素大于基准,然后递归地对左侧和右侧元素进行排序。 ...
### 快速排序算法实现 在提供的代码中,可以看到一个简单的快速排序算法的C语言实现。下面将详细介绍这个实现过程: #### 函数定义 1. **`#include <stdio.h>`** 和 **`#include <stdlib.h>`**: 引入标准输入输出...
在这个“可视化展示快速排序算法实现效果”的项目中,开发人员使用了Qt库来创建一个交互式的图形用户界面,以便用户能够直观地看到快速排序的过程。Qt是一个跨平台的C++图形用户界面应用程序框架,它提供了丰富的UI...
排序算法的实现与分析多种快速排序算法实现排序算法的实现与分析.zip
### 快速排序算法在C#中的实现 #### 一、快速排序算法简介 快速排序是一种高效的排序算法,由英国计算机科学家托尼·霍尔(Tony Hoare)于1960年提出。该算法采用分治策略来把一个序列分为较小的两个子序列,再对这...
快速排序算法实现,随机输入一组数有序输出,用java语言实现
附件是Python 语言版的快速排序算法实现,文件绿色安全,仅供学习交流使用,欢迎大家下载学习交流!
快速排序算法实现,我自己做的,希望对大家有所帮助!!!
### 快速排序算法实现 快速排序的完整实现涉及递归地对子数组进行分区操作。具体步骤如下: ```cpp void Qsort(SqList& L, int low, int high) { if (low ) { // 如果子数组包含多于一个元素 int pivotloc = ...
快速排序算法 C语言实现 快速排序算法是一种高效的排序算法,通过递归的方式将记录分区排序。下面将详细介绍快速排序算法的实现细节。 首先,我们需要了解快速排序算法的基本思想。快速排序算法的核心思想是选择一...
希尔排序,冒泡排序、快速排序递归排序,快速排序非递归排序,快速排序改进算法
快速排序是一种高效的排序算法,由英国计算机科学家C. A. R. Hoare在1960年提出。其核心思想是分治法,通过一趟排序将待排序的数组分为两个子数组,使得左边的元素均小于右边的元素,然后分别对这两个子数组进行递归...
简单的C++快速排序程序,对新手来说有一定的帮助,通过递归的方法完成的排序,降低时间复杂度
快速排序是实际运用中用的最多的算法,虽然它在最坏的情况下会达到n^2,但它的平均性能非常好,期望时间复杂度为nlgn,而且隐含的常数因子非常小,并且是原址排序。 快速排序原理:从一组数中任意选出一个数,将...