admin管理员组文章数量:1794759
快速排序(伪代码 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 ifc/c++
int partitionsed (int a[], int left, int right) { int pivot = a[left]; int i = left,j = right; int k; while (i < j) { while (i < j && a[j] >= pivot) j--; if (i < j) a[i] = a[j]; while (i < j && a[i] < pivot) i++; if (i < j) a[j] = a[i]; } a[i] = pivot; return i; } void quicksort(int a[],int left,int right) { if (left < right) { int insert = partitionsed(a,left,right); quicksort (a,left,insert-1); quicksort (a,insert+1, right); } } python def partitioned(list, left, right): pivot = list[left] i = left j = right while i < j: while i < j and list[j] >= pivot: j = j - 1 if i < j: list[i] = list[j] while i < j and list[i] < pivot: i = i + 1 if i < j: list[j] = list[i] list[i] = pivot return i def QuickSort(list, left, right): if (left < right ): mid = partitioned(list, left, right) QuickSort(list, left, mid-1) QuickSort(list, mid+1,right) list = [5, 1, 7, 3, 7, 0, 4, 8, 6, 9] QuickSort(list, 0, 9) print list版权声明:本文标题:快速排序(伪代码 cc++ python 实现) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686866737a112284.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论