当前位置:   article > 正文

快速排序(伪代码 c/c++ python 实现)_快速排序伪代码

快速排序伪代码

快速排序

最简单的快排。

以头元素作为标记元素,将大于标记元素的数字放在其的右边,小于的放在其左边。之后对于左边和右边的分别排序。

parttitioned (input list[], input left, input right)
	pivot <- list[left]
	i <- left
	j <- right
	while (i < j) do
		whlie (i < j and list[j] >= pivot) do
			j <- j - 1
		end
		if (i < j)
			list[i] <- list [j]
		
		whlie (i < j and list[i] < pivot) do
			i <- i + 1
		end
		if (i < j)
			list[j] <- list [i]
	end
	list[i] <- pivot
	return i

quicksort (input list[], input left, input right)
	if (left < right)
		mid = parttitioned(list, left, left)
		quicksort (list, left, mid-1)
		quicksort (list, mid+1, right)
	end if
 

c/c++

  1. int partitionsed (int a[], int left, int right)
  2. {
  3. int pivot = a[left];
  4. int i = left,j = right;
  5. int k;
  6. while (i < j)
  7. {
  8. while (i < j && a[j] >= pivot)
  9. j--;
  10. if (i < j)
  11. a[i] = a[j];
  12. while (i < j && a[i] < pivot)
  13. i++;
  14. if (i < j)
  15. a[j] = a[i];
  16. }
  17. a[i] = pivot;
  18. return i;
  19. }


  1. void quicksort(int a[],int left,int right)
  2. {
  3. if (left < right)
  4. {
  5. int insert = partitionsed(a,left,right);
  6. quicksort (a,left,insert-1);
  7. quicksort (a,insert+1, right);
  8. }
  9. }
 python

  1. def partitioned(list, left, right):
  2. pivot = list[left]
  3. i = left
  4. j = right
  5. while i < j:
  6. while i < j and list[j] >= pivot:
  7. j = j - 1
  8. if i < j:
  9. list[i] = list[j]
  10. while i < j and list[i] < pivot:
  11. i = i + 1
  12. if i < j:
  13. list[j] = list[i]
  14. list[i] = pivot
  15. return i
  16. def QuickSort(list, left, right):
  17. if (left < right ):
  18. mid = partitioned(list, left, right)
  19. QuickSort(list, left, mid-1)
  20. QuickSort(list, mid+1,right)
  21. list = [5, 1, 7, 3, 7, 0, 4, 8, 6, 9]
  22. QuickSort(list, 0, 9)
  23. print list





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/449250
推荐阅读
相关标签
  

闽ICP备14008679号