#include <iostream>
#include <stdio.h>
using namespace std;
//插入排序
void insert_sort_increase(int *num, int size)
{
int tmp = 0;
int j = 0;
for (int i = 1; i < size; i++)
{
if (num[i] < num[i-1])
{
tmp = num[i];
for (j = i; j > 0 && tmp < num[j-1]; j-- )
{
num[j] = num[j-1];
}
num[j] = tmp;
}
}
}
//冒泡排序
void bubble_sort_increase(int *num, int size)
{
int tmp;
for (int i = 1; i < size; i++)
{
for (int j = 0; j < size-i; j++)
{
if (num[j]>num[j+1])
{
tmp = num[j];
num[j] = num[j+1];
num[j+1] = tmp;
}
}
}
}
//选择排序
void select_sort_increase(int *num, int size)
{
int tmp;
int pos;
for (int i = 1; i < size; i++)
{
tmp = num[i-1];
pos = i-1;
for (int j = i ; j < size; j++)
{
if (num[j] < tmp )
{
tmp = num[j];
pos = j;
}
}
num[pos] = num[i-1];
num[i-1] = tmp;
}
}
//谢尔排序
void shell_sort_increase(int *num, int size)
{
int tmp = 0;
int j = 0;
for (int gop = size/2; gop > 0; gop /=2)
{
for (int i = gop; i < size; i++)
{
tmp = num[i];
for ( j = i; j >= gop && tmp<num[j-gop]; j -= gop)
{
num[j] = num[j-gop];
}
num[j] = tmp;
}
}
}
//快速排序
void quick_sort_increase(int *num, int left, int right)
{
int l = left;
int r = right;
int tmp = num[l]; //选取第一个为驱轴
while (l < r)
{
while(r > l && tmp <= num[r])
{
r--;
}
if (l < r)
{
num[l++] = num[r];
}
while (r > l && tmp >= num[l])
{
l++;
}
if (l < r)
{
num[r--] = num[l];
}
}
num[l] = tmp;
if(left < l-1)
{
quick_sort_increase(num, left, l-1);
}
if (r+1 < right)
{
quick_sort_increase(num, r+1, right);
}
}
void quick_sort_increase(int *num, int size)
{
quick_sort_increase(num,0, size-1);
}
int main()
{
int num[10]={5,1,6,45,22,24,51,23,12,17};
//insert_sort_increase(num, 10);
//bubble_sort_increase(num, 10);
//select_sort_increase(num, 10);
//shell_sort_increase(num, 10);
quick_sort_increase(num, 10);
for (int i=0; i < 10; i++)
{
cout << num[i] << " ";
}
cout << endl << "*********************************************" << endl;
getchar();
return 0;
}
几种排序方法的实现
最新推荐文章于 2021-07-27 18:26:34 发布