您的位置:首页 > 其它

几种排序方法的实现

2013-12-23 10:21 417 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: