void qqsort(vector<int>& a, int left, int right) { if (left>= right) { return; } int p = left; int l = left; int r = right; while (l < r) { while (r > l && a[r] >= a[p]) { r--; } while (l < r && a[l] <= a[p]) { l++; } if (l < r) { swap(a[l], a[r]); } } swap(a[p], a[l]); p = l; qqsort(a, left, p - 1); qqsort(a, p + 1, right); } vector<int> myquickSort(vector<int>& a) { qqsort(a, 0, a.size() - 1); return a; } 根据以上代码不考虑算法的实现,仅根据排序的需求规约,使用等价类划分的方 法设计测试用例。要求明确给出等价类划分的思路以及具体划分方法,包含有效等价类和无效等价类,测试用例使用 gtest测试框架实现。
时间: 2024-04-26 17:19:57 浏览: 202
等价类划分:
1. 空数组:a.size()=0
2. 只有一个元素的数组:a.size()=1
3. 有多个元素的数组:a.size()>1
4. 数组中的元素已经有序:a为升序或降序排列
5. 数组中的元素无序:a为乱序排列
有效等价类测试用例:
1. 空数组:
EXPECT_EQ(myquickSort(vector<int>{}), vector<int>{});
2. 只有一个元素的数组:
EXPECT_EQ(myquickSort(vector<int>{1}), vector<int>{1});
3. 有多个元素的数组:
(1)升序排列的数组:
EXPECT_EQ(myquickSort(vector<int>{1, 2, 3, 4, 5}), vector<int>{1, 2, 3, 4, 5});
(2)降序排列的数组:
EXPECT_EQ(myquickSort(vector<int>{5, 4, 3, 2, 1}), vector<int>{1, 2, 3, 4, 5});
(3)乱序排列的数组:
EXPECT_EQ(myquickSort(vector<int>{3, 5, 1, 4, 2}), vector<int>{1, 2, 3, 4, 5});
无效等价类测试用例:
1. 无效数组:a包含非整数元素
EXPECT_DEATH(myquickSort(vector<int>{1, 2, 3, 4, 5, 1.5}), ".*");
2. 无效数组:a包含重复元素
EXPECT_DEATH(myquickSort(vector<int>{1, 2, 3, 4, 5, 5}), ".*");
以上测试用例可以使用gtest框架实现。
阅读全文