欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

23行代码_动图展示——快排详解(排序最快的经典算法)

发布时间:2024/2/28 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 23行代码_动图展示——快排详解(排序最快的经典算法) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

快排

1.快排的实现逻辑:
  • 先从数列中取出一个数作为基准数(通常取第一个数)。
  • 遍历序列,将比它小的数与比它大的数分别记录下来,分为两类,最后该数放在这两类数中间(它左边的所有数都比它小,右边的所有数都比它大)
  • 分别遍历左右区间,重复,直到各区间只有一个数
  • 2. 动态演示

  • 代码实现
  • #include<bits/stdc++.h> using namespace std;void QuickSort(int *arr, int left, int right) {if(left > right) return;int i = left, j = right;int flag = arr[left];while(i != j) {while(arr[j] > flag && i < j) j--;while(arr[i] <= flag && i < j) i++;if(i<j) swap(arr[i], arr[j]);} //完成while循环后,i=j//交换准基数与相遇值,即将中值归位arr[left] = arr[i];arr[i] = flag;//将中值左、右侧的数据分别进行排序(递归)QuickSort(arr, left, i-1);QuickSort(arr, i+1, right); //最左边的为准基数 } int main() {int n; cin>>n; int array[n];for(int i = 0; i < n; i++) cin>>array[i];QuickSort(array, 0, n-1);//范围for循环打印数组for(int i = 0 ; i < n; i++) cout << array[i] << ' ';return 0;} 超强干货来袭 云风专访:近40年码龄,通宵达旦的技术人生

    总结

    以上是生活随笔为你收集整理的23行代码_动图展示——快排详解(排序最快的经典算法)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。