天天看點

快速排序qsort

今天碰到C語言庫函數qsort,自己卻不知道,感覺白學了

需要頭檔案

函數用法

qsort(nums,numsSize,sizeof(int),cmp)
//nums數組首位址,numsSize數組長度,類型int
           

其中cmp

int cmp(const void* _a,const void* _b)
{
	return *(int*)_a-*(int*)_b;//從小到大,強制類型轉換
	//return *(int*)_b-*(int*)_a;//從大到小
}
           

完整程式

#include<stdio.h>
#include<stdlib.h>
int cmp(const void* _a, const void* _b)
{
	return *(int*)_a - *(int*)_b;//從小到大
}
void sort(int* nums, int numsSize)
{
	qsort(nums, numsSize, sizeof(int), cmp);
}
int main()
{
	int a[] = { 5,4,6,9,10,2,1 };
	sort(a, 7);
	for (int i = 0; i < 7; i++)
		printf("%d ", a[i]);
}
           

控制台輸出:[1 2 4 5 6 9 10]

時間複雜度:O(nlogn)

空間複雜度:O(logn)

繼續閱讀