Tag: 快速

3路快速排序(C实现)

我尝试使用C 实现一些纯通用的算法。我坚持使用3向快速排序但不知何故实现不能提供正确的输出。 输出几乎排序,但有些键不在应有的位置。 代码如下。 提前致谢。 #include #include #include #include static void swap(void *x, void *y, size_t size) { void *tmp = malloc(size); memcpy(tmp, x, size); memcpy(x, y, size); memcpy(y, tmp, size); free(tmp); } static int cmpDouble(const void *i, const void *j) { if (*(double *)i < *(double *)j) return 1; else if (*(double *)i == […]

C随机枢轴快速排序(改进分区function)

我是一名计算机科学专业的学生(刚刚开始),我正在从伪代码编写Quicksort的随机枢轴版本。 我已经编写并测试了它,但这一切都完美无缺…… 分区部分看起来有点过于复杂,因为它感觉我已经错过了某些东西或者过分了。 我无法理解它是否正常或者我是否犯了一些可以避免的错误。 长话短说:它有效,但如何做得更好? 在此先感谢您的帮助 void partition(int a[],int start,int end) { srand (time(NULL)); int pivotpos = 3; //start + rand() % (end-start); int i = start; // index 1 int j = end; // index 2 int flag = 1; int pivot = a[pivotpos]; // sets the pivot’s value while(i<j && flag) // main […]