Linux C 快速排序

sort.h

#ifndef _SORT_H_
#define _SORT_H_
void merge(int *src,unsigned int size);
void qsort(int *src,unsigned int low,unsigned int hight);
int partition(int *src,unsigned int low,unsigned int hight);
#endif

sort.c

#include "sort.h"
#include <stdio.h>
/*****************
 * date  20131114
 */
void merge(int *src,unsigned int size){
int i = 0,j = 0;
for(;i<size;i++){
for(;j<i;j++){
if(*(src+j) > *(src +j +1)){
int temp = *(src + j);
*(src + j) = *(src + j +1);
*(src + j +1) = temp;
}
}
}
}
int partition(int *src,unsigned int low,unsigned int hight){
int lo = low;
int hi = hight;
int pivot = *(src + lo);
while(lo < hi){
while(lo<hi&&pivot < *(src + hi)) hi--;
*(src + lo) = *(src + hi);
while(lo<hi&&pivot > *(src + lo)) lo++;
*(src + hi) = *(src + lo);
}
*(src + lo) = pivot;
return lo;
}
void qsort(int *src,unsigned int low,unsigned int hight){


if(low < hight){
int pindex = partition(src,low,hight);
int k = 0;
partition(src,low,pindex );
partition(src,pindex+1,hight);
}
}
int main(void){
int a[] = {97,65,44,189,223,4,18,88,75,1,390};
int *p = (int*)a;
//merge(p,7);
qsort(p,0,6);
int k = 0;
for(;k<7;k++){
printf("%d\t",*(a + k));
}
return -1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值