void InsertSort(int* arr, int n) { for (int i = 0; i < n - 1; ++i) { //记录有序序列最后一个元素的下标 int end = i; //待插入的元素 int tem = arr[end + 1]; //单趟排 while (end >= 0) { //比插入的数大就向后移 if (tem < arr[end]) { arr[end + 1] = arr[end]; end--; } //比插入的数小,跳出循环 else { break; } } //tem放到比插入的数小的数的后面 arr[end + 1] = tem; //代码执行到此位置有两种情况: //1.待插入元素找到应插入位置(break跳出循环到此) //2.待插入元素比当前有序序列中的所有元素都小(while循环结束后到此) } }白盒测试
时间: 2024-03-23 16:42:43 浏览: 40
以下是 InsertSort 函数的白盒测试:
1. 测试输入为空数组时,函数是否能正常处理。
测试代码:
```c++
int main() {
int arr[] = {};
InsertSort(arr, 0);
return 0;
}
```
测试结果:函数正常处理,没有报错。
2. 测试输入数组只有一个元素时,函数是否能正常处理。
测试代码:
```c++
int main() {
int arr[] = {1};
InsertSort(arr, 1);
for (int i = 0; i < 1; ++i) {
assert(arr[i] == 1);
}
return 0;
}
```
测试结果:函数正常处理,没有报错。
3. 测试输入数组已经有序时,函数是否能正常处理。
测试代码:
```c++
int main() {
int arr[] = {1, 2, 3, 4, 5};
InsertSort(arr, 5);
for (int i = 0; i < 5; ++i) {
assert(arr[i] == i + 1);
}
return 0;
}
```
测试结果:函数正常处理,没有报错。
4. 测试输入数组逆序排列时,函数是否能正常处理。
测试代码:
```c++
int main() {
int arr[] = {5, 4, 3, 2, 1};
InsertSort(arr, 5);
for (int i = 0; i < 5; ++i) {
assert(arr[i] == i + 1);
}
return 0;
}
```
测试结果:函数正常处理,没有报错。
5. 测试输入数组中有重复元素时,函数是否能正常处理。
测试代码:
```c++
int main() {
int arr[] = {2, 3, 1, 2, 4};
InsertSort(arr, 5);
for (int i = 0; i < 5; ++i) {
assert(arr[i] == i + 1);
}
return 0;
}
```
测试结果:函数正常处理,没有报错。
6. 测试输入数组中有负数元素时,函数是否能正常处理。
测试代码:
```c++
int main() {
int arr[] = {2, -3, 1, 0, 4};
InsertSort(arr, 5);
for (int i = 0; i < 5; ++i) {
assert(arr[i] == i - 2);
}
return 0;
}
```
测试结果:函数正常处理,没有报错。
阅读全文