#include<iostream>
using std::cin;
using std::cout;
using std::endl;
#include<vector>
using std::vector;
#include<algorithm>
using std::random_shuffle;
using std::swap;
void bubbleSort(vector<int>v);
void printVector(vector<int>v);
void selectionSort(vector<int>v);
void insertionSort(vector<int>v);
void shellSort(vector<int>v);
int main()
{
vector<int>v;
for (int i = 0; i < 30; ++i)
{
v.emplace_back(i + 1);
}
random_shuffle(v.begin(), v.end());
printVector(v);
//冒泡排序
bubbleSort(v);
//选择排序
selectionSort(v);
//插入排序
insertionSort(v);
//希尔排序
shellSort(v);
}
void printVector(vector<int>v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
}
void bubbleSort(vector<int>v)
{
cout << "冒泡排序,升序:" << endl;
for (int i = 0; i < v.size() - 1; ++i)
{
bool flag = true;
for (int j = 0; j < v.size() - i - 1; ++j)
{
if (v[j] > v[j+1])
{
swap(v[j+1], v[j]);
flag = false;
}
}
if (flag)
{
break;
}
}
printVector(v);
}
void selectionSort(vector<int>v)
{
cout << "选择排序,降序:" << endl;
for (int i = 0; i < v.size(); ++i)
{
for (int j = i + 1; j < v.size(); ++j)
{
if (v[i] < v[j])
{
swap(v[i], v[j]);
}
}
}
printVector(v);
}
void insertionSort(vector<int>v)
{
cout << "插入排序,升序:" << endl;
for (int i = 1; i < v.size(); ++i)
{
int temp = v[i];
int j = i - 1;
for (; j >= 0; --j)
{
if (v[j] > temp)
{
v[j + 1] = v[j];
}
else
{
break;
}
}
v[j + 1] = temp;
}
printVector(v);
}
void shellSort(vector<int>v)
{
cout << "希尔排序,升序:" << endl;
int gap = v.size();
while (gap != 1)
{
gap = gap / 3 + 1;
for (int i = gap; i <v.size (); ++i)
{
int temp = v[i];
int j = i - gap;
for (; j >= 0; j -= gap)
{
if (v[j] > temp)
{
v[j + gap] = v[j];
}
else
{
break;
}
}
v[j + gap] = temp;
}
}
printVector(v);
}
有时间再做一个有讲解的吧。。。