快速排序

    xiaoxiao2021-03-25  77

    快速排序思想逻辑

    在数据集之中,选择一个元素作为”基准”(pivot)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止


    快速排序代码

    #include<iostream> using namespace std; void Quicksort(int32_t numList[], int32_t left, int32_t right) { if (left >= right) { return; } auto leftTmp = left; auto rightTmp = right; auto tmp = numList[left]; while (rightTmp > leftTmp) { while (rightTmp > leftTmp && numList[rightTmp] > tmp) { rightTmp--; } if (rightTmp > leftTmp) { numList[leftTmp] = numList[rightTmp]; leftTmp++; } while (rightTmp > leftTmp && numList[leftTmp] < tmp) { leftTmp++; } if (rightTmp > leftTmp) { numList[rightTmp] = numList[leftTmp]; rightTmp--; } } numList[leftTmp] = tmp; Quicksort(numList, left, leftTmp - 1); Quicksort(numList, rightTmp + 1, right); } void main() { int32_t numList[] = { 6,1,2,7,9,3,4,5,10,8 }; int32_t count = sizeof(numList) / sizeof(numList[0]); Quicksort(numList, 0, count - 1); }

    返回排序算法分析总结

    转载请注明原文地址: https://ju.6miu.com/read-37224.html

    最新回复(0)