排序算法之快速排序

快速排序算法,以升序为例

操作系统:ubuntu

编译软件:gcc

结果截图:

源代码:

#include<stdio.h>  

void quickSort(int *,int,int);
int findPoss(int *,int,int);  

int main()
{
int i;
int arry[] = {8,9,0,-3,6,7,-11};  

quickSort(arry,0,6);  

printf("After sorted:\n");
for(i=0;i<7;i++)
  printf("%d ",arry[i]);
printf("\n");
return 0;
}  

//快速排序函数,通过递归实现
void quickSort(int *a,int low,int high)
{
int pos;  

if(low < high)
{
  pos = findPoss(a,low,high);
  quickSort(a,low,pos-1);
  quickSort(a,pos+1,high);
}
return ;
}  

//该函数返回分割点数值所在的位置,a为待排序数组的首地址,
low刚开始表示排序范围内的第一个元素的位置,逐渐向右移动,
high刚开始表示排序范围内的最后一个位置,逐渐向左移动  

int findPoss(int *a,int low,int high)
{
int val = a[low];
while(low < high)
{
  while(low=val)
     high--;
  a[low] = a[high];  

  while(low<=val)
     low++;
  a[high] = a[low];
}  

//此时low=high
a[low] = val;
return low;
}

返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

作者:csdn博客 兰亭风雨

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, int
, 排序
, quicksort
, 快速
升序
快速排序算法、java快速排序算法、c语言快速排序算法、快速排序算法举例说明、快速排序算法流程图,以便于您获取更多的相关知识。

时间: 2024-12-31 02:53:47

排序算法之快速排序的相关文章

内部排序算法:快速排序

基本思想 设当前待排序的数组无序区为R[low..high],利用分治法可将快速排序的基本思想描述为: 分解: 在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左.右两个较小的子区间R[low..pivotpos-1)和R[pivotpos+1..high],并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字pivot.key,右边的子区间中所有记录的关键字均大于等于pivot.key,而基准记录pivot则位于正确的位置(

我的Java开发学习之旅------&amp;gt;Java经典排序算法之快速排序

一.算法思想     快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). (1) 分治法的基本思想     分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题.递归地解这些子问题,然后将这些子问题的解组合为原问题的解. (2)快速排序的基本思想     设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为:①分解:      在

排序算法:快速排序

快速排序(Quicksort)是对冒泡排序的一种改进. 在实际中最常用的一种排序算法,速度快,效率高. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 快速排序采用的思想是分治思想. 算法介绍: 设要排序的数组是A[0]--A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面

PHP四种基本排序算法示例_php实例

许多人都说算法是程序的核心,算法的好坏决定了程序的质量.作为一个初级phper,虽然很少接触到算法方面的东西.但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具.这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路. 前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序. $arr(1,43,54,62,21,66,32,78,36,76,39); 1. 冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序

排序算法(Java)——那些年面试常见的排序算法

前言 排序就是将一组对象按照某种逻辑顺序重新排列的过程.比如信用卡账单中的交易是按照日期排序的--这种排序很可能使用了某种排序算法.在计算时代早期,大家普遍认为30%的计算周期都用在了排序上,今天这个比例可能降低了,大概是因为现在的排序算法更加高效.现在这个时代数据可以说是无处不在,而整理数据的第一步往往就是进行排序.所有的计算机系统都实现了各种排序算法以供系统和用户使用. 即使你只是使用标准库中的排序函数,学习排序算法仍然有很大的实际意义: - 排序算法往往是我们解决其他问题的第一步 - 排序

经典的7种排序算法 原理C++实现

经典的7种排序算法 原理C++实现 排序是编程过程中经常遇到的操作,它在很大程度上影响了程序的执行效率. 7种常见的排序算法大致可以分为两类:第一类是低级排序算法,有选择排序.冒泡排序.插入排序:第二类是高级排序算法,有堆排序.排序树.归并排序.快速排序. 一.低级排序算法 1. 选择排序 排序过程:给定一个数值集合,循环遍历集合,每次遍历从集合中选择出最小或最大的放入集合的开头或结尾的位置,下次循环从剩余的元素集合中遍历找出最小的并如上操作,最后直至所有原集合元素都遍历完毕,排序结束. 实现代

9种排序算法总结

排序算法可以说是计算机专业学生要学习的最基础的算法,但其实也是最重要的,现在大部分互联网公司笔试面试也都会涉及到排序算法的知识.除了了解思想之外,还应该动手写一写,分析一些具体思路.时间复杂度.空间复杂度和稳定性等. 我们面试讨论小分队也简单讨论了一下排序算法,为了加深记忆,我自己也动手写了一些代码(Linux平台写的,自己测试是通过了),并做一些分析(由于水平较水,代码可能有误!). 9种排序算法分别为:选择排序.冒泡排序.插入排序.希尔排序.归并排序.堆排序.快速排序.计数排序.基数排序!

排序算法——快速排序

今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高.就像名字一样,快速排序是最优秀的一种排序算法. 思想 快速排序采用的思想是分治思想. 快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置.递归快速排序,将其他n-1个元素也调整到排序后的正确位置.最后每个元素都是在排序后的正 确位置,排序完成.所以快速排序算法的核心算法是分区操

常用内部排序算法之二:快速排序

前言 快速排序可以说是内部排序算法中的高手,之所以称为快速排序,是因为快速排序算法从整体性能上讲是排序冠军.快速排序算法的思想是:通过一趟快速排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的记录的关键字小,则可分别对这两部分记录继续进行排序,达到整个记录有序.实现快速排序算法的核心是partition函数,这个函数的主要目的先选取当中的一个关键字(称为枢轴),然后尽可能将他放在一个位置,使得它左边的值都比它小,右边的值比它大. 快速排序算法实现 package com.