插入排序-简单版&插入排序-优化版(希尔排序,ShellSort)
插入排序-简单版
代码:
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
void InsertionSort(int arr[], int thisSize) {//从小到大排序
for (int i = 1; i < thisSize; i++) {
int temp = arr[i];
int j;
for (j = i; j >= 0 && arr[j - 1] > temp; j--) {
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
}
void TestCase() {
int arr[16];
srand(time(NULL));
for (int i = 0; i < 16; i++) {
arr[i] = rand() % 100;
}
InsertionSort(arr, 16);
cout << endl;
for (int i = 0; i < 16; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
TestCase();
return 0;
}
希尔排序(ShellSort)
代码:
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
void ShellSort(int arr[], int thisSize) {//从小到大排序
int incrementArray[3] = { 5,3,1 };
for (int i = 0; i < 3; i++) {
int increment = incrementArray[i];
for (int j = increment; j < thisSize; j++) {
int temp = arr[j];
int k;
for (k = j; k >= increment; k -= increment) {
if (temp < arr[k - increment]) {
arr[k] = arr[k - increment];
}
else {
break;
}
}
arr[k] = temp;
}
}
}
void TestCase() {
srand(time(NULL));
int arr[16];
for (int i = 0; i < 16; i++) {
arr[i] = rand() % 100;
}
ShellSort(arr, 16);
cout << endl;
for (int i = 0; i < 16; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
TestCase();
return 0;
}
希望各位认真理解,加油!!!💕