算法导论第七章思考题7-2针对相同元素的快速排序-c++
2016-10-04 02:04
1021 查看
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <string> #include <math.h> #include <time.h> using namespace std; typedef struct Par_result { int q; int t; }; Par_result PARTITION(int a[],int p,int r) { int x = a[r]; int i = p - 1; int t = p - 1; for(int j=p;j<=r;j++) { if(a[j] < x)//or <=? { i++; t++; int temp = a[t]; if(t == j) { a[t] = a[i]; a[i] = temp; } else { a[t] = a[i]; a[i] = a[j]; a[j] = temp; } } else if(a[j] == x) { t++; int temp = a[t]; a[t] = a[j]; a[j] = temp; } } Par_result par_result = {i,t}; return par_result; } void quickSort(int a[],int p,int r) { if(p<r) { Par_result par_result = PARTITION(a,p,r); quickSort(a,p,par_result.q); quickSort(a,par_result.t+1,r); } } int main() { char s; //do{ int a[10]; //int a[10]= {1,4,5,6,4,2,7,4,8,4}; //int a[10] = { 8 , 8 , 9 , 5 , 9 , 9, 5, 4, 3, 2}; srand(time(0)); for(int i=0;i<10;i++) { a[i] = rand()%10; printf("%5d",a[i] ); } cout<<endl; quickSort(a,0,9); for(int i=0;i<10;i++) printf("%5d",a[i] ); cout<<endl; cin>>s; //}while(s == 'y' || s == 'Y'); return 0; }
相关文章推荐
- 算法导论7-2,针对相同元素的快速排序
- 算法导论-7-2 针对有相同元素值的快速排序
- 算法导论-第七章-快速排序:随机化快速排序C++实现
- 算法导论第七章思考题7-5三数取中划分 -c++
- 针对相同元素值的快速排序
- 算法导论 改进快排(2)----针对相同元素值 7.2
- 算法导论第七章-思考题7-1HOARE-QUICKSORT-C++
- 算法导论第七章伪码转C++__快速排序
- C++快速排序(以中间元素为元点)
- 算法导论:第七章 快速排序
- 算法导论第七章 -- 快速排序
- [笔试题 7][c/c++]删除两个双向链表中相同元素的所有节点
- 算法导论第七章最后思考题
- 算法导论 第七章:快速排序(Quicksort)
- 算法导论 第七章快速排序与随机快速排序
- 第七章快速排序之“采取“尾递归”和“三数取中”技术的快速排序”(思考题7-4、7-5)
- 算法导论Java实现-快速排序(第七章)
- 算法导论 第七章快速排序中两种swap函数实现方式比较
- 算法导论学习随笔——第七章 快速排序
- 算法导论 第七章快速排序中两种swap函数实现方式比较