在线时间:8:00-16:00
132-9538-2358
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
算法基本思想:
第一步:教官面对一列无序的队伍,他指着最右边的一个人A说:“比他高的站他右边,比他矮的站他左边。”完成之后,队伍被他分割成了两列,第一列:比A矮的在A的左边;第二列:比A 高的在A 的右边。第二步:他首先处理第一列,指着在A的左边的一个人B(也就是第一列中的最右边的一个人)说到:“比B高的站他右边,比B矮的站他左边”。这样完成之后,第一列又他成了两列。同样的方法处理第二列,第二列也被分成两列。第二步完成之后,序列变成了四列。教官又以上面的方法处理这四列,如此循环下去。。。那什么时候递归停止呢?那就是当最后被分割成的小列中只有一个人的时候递归停止,不用再分了。当然,上例中考官是以最右边的人为基准,进行分割的。你也可以随便指一个人作为基准进行分割。
算法的实现:
//---------QuickSort.h-----------// class QuickSort { const int arraySize; float * array; public: QuickSort(int arraySize); ~ QuickSort(); void Initital(); int Partition(int first, int last); void Quicksort(int first, int last); void Sort(); void PrintIt(); };
//-------------QuickSort.cpp------------// #include "iostream" #include "QuickSort.h" using namespace std; QuickSort::QuickSort(int Size):arraySize(Size) { } void QuickSort::Initital() { array = new float[arraySize]; for(int i = 0; i < arraySize; i++) { cout << "Input the number " << i+1 << " : "; cin >> array[i]; } cout << "Entered !" << endl; } int QuickSort::Partition(int first, int last) { int i, j; j = first - 1; for(i = first; i < last; i++) //Partition的精华思想,把last当做是标准 { if(array[i] < array[last]) { j ++; float temp = array[i]; array[i] = array[j]; array[j] = temp; } } float temp = array[last]; array[last] = array[++j]; array[j] = temp; return j; } void QuickSort::Quicksort(int first, int last) { int pivot; if(first < last) //算法的基本实现 { pivot = Partition(first, last); Quicksort(first, pivot - 1); Quicksort(pivot + 1, last); } } void QuickSort::Sort() { Quicksort(0, arraySize - 1); } void QuickSort::PrintIt() { cout << "After QuickSort :" << endl; for(int i = 0; i < arraySize; i ++) { cout << array[i] << " "; } cout << endl; } QuickSort::~QuickSort() { delete []array; }//------------main.cpp------------// #include "iostream" #include "QuickSort.h" using namespace std; int main() { int size; cout << "Enter the size of the array : "; cin >> size; if(size > 0) { QuickSort sort(size); sort.Initital(); sort.Sort(); sort.PrintIt(); system("pause"); } return 0; }
感想:
本文算法只是一个QuickSort的模板,可以根据情况来灵活应变,当然也有许多地方可以优化,在这就不再多述了
评论
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
请发表评论