1.直接插入排序
1.1将数组分为有序和无序部分 无序部分插入到有序部分4
#include<iostream>
using namespace std;
void InsertSort(int a\[\], int n) {
int tmp;
int j;
for (int i = 1; i < n; i++) {
if (ai < ai - 1) {
tmp = ai;
for ( j = i - 1; j >= 0 && tmp < aj; j--) {
aj + 1 = aj;
}
aj + 1 = tmp;
}
}
}
void Print_a(int a\[\], int n) {
for (int i = 0; i < n; i++) {
cout << ai << " ";
}
}
int main() {
int a10 = { 1,9,2,8,3,7,4,6,5,10 };
int n = sizeof(a) / sizeof(a0);
InsertSort(a, n);
Print_a(a, n);
return 0;
}
希尔排序
#include<iostream>
using namespace std;
void ShellSort(int a\[\], int n) {
int gap = n;
while (gap > 1) {
gap = gap / 3 + 1;
int i;
for (int i = 0; i < n -gap; i++) {
int end = i;
int tmp = aend + gap;
while (end >= 0) {
if (aend > tmp) {
aend + gap = aend;
end -= gap;
}
else break;
}
aend + gap = tmp;
}
}
}
void print_a(int a\[\], int n) {
for (int i = 0; i < n; i++) {
cout << ai << " ";
}
}
int main() {
int a\[\] = { 1,9,2,8,3,7,4,6,5,10 };
int n = sizeof(a) / sizeof(a0);
ShellSort(a, n);
print_a(a, n);
return 0;
}
简单选择排序
#include<iostream>
using namespace std;
void SelectSort(int a\[\], int n) {
for (int i = 0; i < n - 1; i++) {
int Min = i;
for (int j = i + 1; j < n; j++) {
if (aj < aMin) {
Min = j;
}
}
if (Min != i) {
swap(ai, aMin);
}
}
}
void print_a(int a\[\], int n) {
for (int i = 0; i < n; i++) {
cout << ai << " ";
}
}
int main() {
int a\[\] = { 1,9,2,8,3,7,4,6,5,10 };
int n = sizeof(a) / sizeof(a0);
SelectSort(a, n);
print_a(a, n);
return 0;
}