zoukankan      html  css  js  c++  java
  • 快速排序(C语言实现) 分类: 数据结构 2014-12-07 14:56 127人阅读 评论(0) 收藏




    #include "sort.h"
    
    void Quick(int* arr,int low,int high);
    int FindPos(int* arr,int low,int high);
    int main(void)
    {
    	int arr[]={-1,1,-2,2,3,3,-4};
    	Print(arr,7);
    	Quick(arr,0,6);
    	Print(arr,7);
    
    	return 0;
    }
    
    void Quick(int* arr,int low,int high)
    {
    	int pos;
    	if(low<high)
    	{
    		pos=FindPos(arr,low,high);//找出合适的位置,将数组分为两部分比较
    		Quick(arr,low,pos-1); //从low处开始,pos-1结束,因为pos的位置已经找到了,再将数组分为两部分比较,一直下去
    		Quick(arr,pos+1,high); //从pos+1处开始,higt结束,因为pos的位置已经找到了,再将数组分为两部分比较,一直下去
    	}
    }
    
    //找出合适的位置
    int FindPos(int* arr,int low,int high)
    {
    	int val=arr[low];//现假设low,为最小值的下标,保存起来
    	while(low<high)
    	{
    		while(low<high && val<=arr[high]) //判断条件
    			high--;
    		arr[low]=arr[high];
    		while(low<high && val>=arr[low])
    			low++;
    		arr[high]=arr[low];
    	}
    	arr[low]=val;
    	return low;
    }
    
    //头文件 内容
    #include <stdio.h>
    
    void Print(int* arr,int len)
    {
        int i;
        for(i=0;i<len;i++)
        {
            printf("%d ",arr[i]);
        }
        printf("
    ");
    }
    
    void Swap(int* a,int* b)
    {
        *a=*a+*b;
        *b=*a-*b;
        *a=*a-*b;
    }
    
    
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    睡眠错误
    Linux中安装Mysql授权远程访问
    lamp安装
    MySQL 数据类型(Day41)
    MySQL 表操作 (Day40)
    MySQL之存储引擎(Day39)
    MySQL下载安装
    python并发编程之IO模型(Day38)
    同步锁,死锁现象与递归锁,信息量Semaphore.....(Day36)
    多线程并发练习(Day35)
  • 原文地址:https://www.cnblogs.com/L-Lune/p/4671292.html
Copyright © 2011-2022 走看看