快速排序

本文介绍了一个简单的快速排序算法实现过程,使用C++编程语言,并通过随机数填充数组进行排序演示。该实现选择数组的第一个元素作为基准值进行分区操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单的快速排序实现。其中,对比的节点为第一个结点。

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<ctime>
 4 #define VectorMax 100
 5 using namespace std;
 6 int vector[VectorMax];        /* * * sort vec * length is vec's length * flag == 0, increase; * flag == 1, decrease * */
 7 void myqsort(int *vec, int length);
 8 void print(int *vec, int length);
 9 int main()
10 {
11     srand(time(NULL));
12     for (int i = 0; i < VectorMax; i++)
13         vector[i] = rand() % 100;
14     myqsort(vector, VectorMax);
15     print(vector, VectorMax);
16     return 0;
17 }
18 /*sort vec[begin, end) */
19 
20 void subSort(int *vec, int begin, int end)
21 {
22     int Tag = vec[begin];
23     int Begin = begin;
24     int End = end - 1;
25     while (Begin < End) {
26         while (vec[End] > Tag && Begin < End)
27             End--;
28         vec[Begin] = Begin < End ? vec[End] : vec[Begin];
29         while (vec[Begin] <= Tag && Begin < End)
30             Begin++;
31         vec[End] = Begin < End ? vec[Begin] : vec[End];
32     }
33     vec[Begin] = Tag;
34     if (Begin - begin > 1)
35         subSort(vec, begin, Begin);
36     if (end - Begin > 1)
37         subSort(vec, Begin + 1, end);
38 }
39 
40 void myqsort(int *vec, int length)
41 {
42     subSort(vec, 0, length);
43 } 
44 void print(int *vec, int length)
45 {
46     for (int i = 0; i < length; i++)
47         cout << vec[i] << " ";
48     cout << endl;
49 }

 

转载于:https://www.cnblogs.com/-lee/p/4254081.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值