#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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。