快速排序 linux内核,快速排序Linux下c 实现

这次、给出快速排序的实现,主要代码如下:

1、排序头文件:quickSort.h

#ifndef QUICKSORT_H

#define QUICKSORT_H

extern void quickSort(int *pArr, int length);

#endif

2、排序源文件:quickSort.c

#include "quickSort.h"

void quick_Sort(int * pArr, int left, int right)

{

if(left >= right)

{

return;

}

int k = *(pArr+left);

int l,r;

l=left;

r=right;

while(left < right)

{

while(*(pArr+right)>k && right> left)

{

right--;

}

if(left!=right)

{

*(pArr+left)=*(pArr+right);

left++;

}

while(*(pArr+left)

{

left++;

}

if(left!=right)

{

*(pArr+right)=*(pArr+left);

right--;

}

}

*(pArr+left)=k;

if(l < left-1)

{

quick_Sort(pArr, l, left-1);

}

if(r > left+1)

{

quick_Sort(pArr, left+1, r);

}

}

void quickSort(int *pArr, int length)

{

quick_Sort(pArr, 0, length-1);

}

3、main头文件: main.h

#ifndef MAIN_H

#define MAIN_H

#include

#include "quickSort.h"

int main(void);

void showArr(const int *pArr, const int length);

void initRandomArr(int *pArr, const int length);

#endif

4、main源文件:main.c

#include "main.h"

int main(void)

{

printf("Input array length:\n");

int length;

scanf("%d", &length);

if(length<0)

{

printf("Array length must be larger 0\n");

return 1;

}

int arr[length];

initRandomArr(arr, length);

printf("Get random array :\n");

showArr(arr, length);

quickSort(arr, length);

printf("quick sort result:\n");

showArr(arr, length);

return 0;

}

void showArr(const int *pArr, const int length)

{

int i;

for(i=0; i

{

printf("%d ", *(pArr+i));

}

printf("\n");

}

void initRandomArr(int *pArr, const int length)

{

int i;

srand(time(NULL));

for(i=0; i< length; i++)

{

*(pArr+i)=rand()%1000;

}

}

5、Makefile文件:

all:main

main:main.o quickSort.o

gcc -o main main.o quickSort.o

main.o:main.c

gcc -c main.c

quickSort.o:quickSort.c

gcc -c quickSort.c

clean:

@echo "start cleanning..."

-rm main *.o

@echo "completed clean"

.PHONY:clean

6、编译:

[root@localhost quickSort]$ make

gcc -c main.c

gcc -c quickSort.c

gcc -o main main.o quickSort.o

如果一切顺利,降看到可执行文件:main,执行大致如下:

[root@localhost quickSort]$ ./main

Input array length:

10

Get random array :

261 350 755 768 500 405 585 127 534 518

quick sort result:

127 261 350 405 500 518 534 585 755 768

快速排序最差时间复杂度是:О(n²),最优时间复杂度:О(nlogn),平均时间复杂度:О(nlogn)。快速排序是种不稳定排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值