面试题1 快速排序

柔情只为你懂 2023-02-26 13:23 64阅读 0赞

//大体思路

  1. 先从数列中取出一个数作为基准数。
  2. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
  3. 采用递归的方式对待排序的数列进行若干次的操作,

//具体思路

参照博客:https://www.cnblogs.com/yundan/p/4022056.html

或则视频:https://www.bilibili.com/video/BV1at411T75o?from=search&seid=37805232156390215

//调用

void Main(){

Quit_Sort(listb, 0, listb.Length - 1);

}

//快速排序
int[] listb = { 15, 7, 12, 45, 23, 3, 9, 55 };
void Quit_Sort(int[] b,int left,int right) {
if (left < right)
{
int mid = Get_Mid(b, left, right);
Quit_Sort(b, left, mid - 1);
Quit_Sort(b, mid + 1, right);
}
else {
Debug.Log(b);
}
}

  1. int Get\_Mid(int\[\] b, int left, int right)
  2. \{
  3. int priov = b\[left\];
  4. while (left < right)
  5. \{
  6. while (left < right)//右
  7. \{
  8. if (b\[right\]>= priov) \{
  9. right--;
  10. \}
  11. else \{
  12. b\[left\] = b\[right\];
  13. break;
  14. \}
  15. \}
  16. while (left < right)
  17. \{
  18. if (b\[left\] >= priov)
  19. \{
  20. b\[right\] = b\[left\];
  21. break;
  22. \}
  23. else
  24. \{
  25. left++;
  26. \}
  27. \}
  28. \}
  29. b\[left\] = priov;
  30. return left;
  31. \}

发表评论

表情:
评论列表 (有 0 条评论,64人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面试1 快速排序

    //大体思路 1. 先从数列中取出一个数作为基准数。 2. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3. 采用递归的方式对待排序的数