快速排序法

转载 2006年06月21日 12:35:00

****************快速排序法BEGIN***********************

#include <iostream.h>
#include <stdio.h>
#include <windows.h>
void qkpass(int a[],int *p1,int *p2){//以数组a[]的第一个数为基准
 int tag=*p1;                     //大于它的放后面,小于它的放前面
    while(p1!=p2){
  while((*p2>tag||*p2==tag)&&p2!=p1) p2--;
  if(*p2<tag&&p2!=p1){
   *p1=*p2;
   p1++;
  }
  if(p2==p1) break;
  while(p1!=p2&&(*p1<tag||*p1==tag)) p1++;
  if(*p1>tag&&p1!=p2){
   *p2=*p1;
   p2--;
  }
  if(p2==p1) break;
 }
 *p1=tag;       //此时p1==p2,把做为基准值的tag赋给当前位置
}
void QuickOrder(int a[],int *p1,int *p2){
 int *t1=new int,*t3=new int,*t2=new int ;//定义三个指针来保存状态
 t1=p1;t2=p2;
 if(p1<p2){
  qkpass(a,p1,p2);//对整个数组进行运算
  t3=p2;
  qkpass(a,t1,p2--);//对原数组第一个数前的数排序
  qkpass(a,t3++,t2);//对原数组第一个数后的数进行排序
 }
}
void main(){
 int sum[9]={4,3,2,8,7,5,6,0,1};
 int i=0;
  int *p1=new int ,*p2=new int;
 p1=sum;p2=sum+8;
 QuickOrder(sum,p1,p2);//调用函数
 for(int k=0;k<=8;k++) //输出排序过后的数组
  cout<<sum[k]<<"   ";
}

****************快速排序法OVER***********************

运行结果当然是:0 1 2 3 4 5 6 7 8 

 

哈哈,又写了一个

【数值计算】幂法与反幂法

幂法求矩阵模最大的特征值及其对应特征向量 注:需要模最大特征值唯一,矩阵各列线性无关// 幂法求特征值 // 需要保证各列线性无关 #include #include #include #in...
  • qq379548839
  • qq379548839
  • 2016年10月17日 21:49
  • 1311

黄金分割法与Fibonacci法

最近在上一门最优化算法的课,于是就打算写一篇博客来将自己所学的知识做一个巩固,这两种方法都是用来选取函数的极值点,属于的一维搜索方法中的试探法,方式也是很简单那就是在值域[a,b][a, b]内选取两...
  • zp1996323
  • zp1996323
  • 2016年04月15日 20:10
  • 350

开放地址法与链表法的优缺点及其实现

一,优缺点:      1.开放地址法:容易产生堆积问题;不适于大规模的数据存储;散列函数的设计对冲突会有很大的影响;插入时可能会出现多次冲突的现象,删除的元素是多个冲突元素中的一个,需要对后面的元...
  • mark555
  • mark555
  • 2014年03月25日 09:59
  • 1267

阿法萨法萨法

http://www.rznews.cn/yszx/ssjk/6944849796.html http://www.rznews.cn/yszx/ssjk/6944843796.html...
  • duyong4021
  • duyong4021
  • 2014年10月13日 16:58
  • 1

牛顿法,阻尼牛顿法

泰勒公式本质就是多项式逼近推广到无穷级数逼近,在实际应用中对于具有复杂形式的函数,我们常常希望用较为简单的函数形式表示它,那多项式就是这种简单的形式。用吴文俊的话说就是:把质的困难转化成量的复杂。展开...
  • philosophyatmath
  • philosophyatmath
  • 2017年04月13日 17:32
  • 1284

优化算法——牛顿法(Newton Method)

一、牛顿法概述
  • google19890102
  • google19890102
  • 2014年11月13日 22:00
  • 16634

最优化之牛顿法

求解无约束现行规划问题的Newton法是利用目标函数的二次Taylor展开式构造搜索方向的方法,它是以为搜索中的Newton法的推广。 考虑UNP,其中f(x)二阶连续可微。 Newton法就是以Ne...
  • gy910210
  • gy910210
  • 2014年12月30日 20:15
  • 1170

牛顿法与拟牛顿法学习笔记(一)牛顿法

机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BF...
  • peghoty
  • peghoty
  • 2014年03月24日 00:51
  • 51540

【数据结构】筛选法建堆

如果已经存在N个数据元素,如何将这些元素按照堆的要求存储在一个一维数组中呢?这就是堆的建立问题。 首先我们可以想到按照之前的堆的插入算法将这N个元素依次插入一个空堆中,分析时间复杂度,每插入一个元素...
  • wait_nothing_alone
  • wait_nothing_alone
  • 2017年05月29日 16:06
  • 5643

拉格朗日乘子法的数学基础

出处:http://dataunion.org/7637.html 拉格朗日乘子法无疑是最优化理论中最重要的一个方法。但是现在网上并没有很好的完整介绍整个方法的文章。我这里尝试详细介...
  • kejiaming
  • kejiaming
  • 2017年04月10日 17:48
  • 843
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速排序法
举报原因:
原因补充:

(最多只允许输入30个字)