1.桶排序
这种方法非常简单,但是浪费的空间比较多
//桶排序
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int m[8] = { 3,12,24,56,54,78,93,11 };
int a[10], b[40], c[50];
int i;
for (i = 0; i < 8; i++)
{
if (m[i] >=0 && m[i] < 11)
a[m[i]-1] = 1;
if (m[i] >=11 && m[i]<=50 )
b[m[i]-10-1] = 1;
if (m[i] > 50 && m[i] <= 100)
c[m[i] - 50-1] = 1;
}
for (i = 0; i < 8; i++)
{
printf("%4d", m[i]);
}
cout << endl;
for (i = 0; i < 10; i++)
if (a[i] == 1)
printf("%4d", i+1);
for (i = 0; i <=40; i++)
if (b[i] == 1)
printf("%4d", i + 10+1);
for (i = 0; i <=50; i++)
if (c[i] == 1)
printf("%4d", i + 50+1);
system("pause");
}
2.冒泡排序
//冒泡排序
#include <stdio.h>
#include <iostream>
using namespace std;
void MaoPao(int m[], int length)
{
int i, j, t;
bool temp;
for (i = 0; i < 8 - 1; i++)
{
temp = true;
for (j = 0; j < 8 - i - 1; j++)//后面最大的已排序,无需再排
{
if (m[j] > m[j + 1])
{
t = m[j];
m[j] = m[j + 1];
m[j + 1] = t;
temp = false;
}
}
if (temp) //对冒泡排序进行改进
return;
}
}
int main()
{
int m[8] = { 0,12,24,21,54,78,90,91 };
int length=8,i;
MaoPao(m, length);
for(i=0;i<8;i++)
{
printf("%4d", m[i]);
}
system("pause");
}
3.快速排序
//排快速序
#include <stdio.h>
#include <iostream>
using namespace std;
void sort(int m[],int l,int r)
{
int i = l, j = r;
int temp = m[i];
if (l > r) return;
while (i != j)
{
while (m[j] >= temp && j > i)
j--;
if (j > i)
m[i] = m[j];
while (m[i] <= temp && i < j)
i++;
m[j] = m[i];
}
m[i] = temp;
sort(m, l, i - 1);
sort(m, i + 1, r);
}
int main()
{
int m[7] = {1,4,2,9,6,6,7};
int i;
sort(m, 0, 6);
for(i=0;i<8;i++)
{
printf("%4d", m[i]);
}
system("pause");
}