简单排序算法
<1>冒泡算法:
#include <iostream>
#define N 5
using namespace std;
void fun(int a[],int m);
int main(void)
{
int i;
int a[N] = {85,56,32,58,12};
fun(a,N);
for (i = 0;i < N;i++)
cout << a[i] << ' ';
return 0;
}
void fun(int a[],int m)
{
int i,j,temp;
for (i = 0;i < m-1;i++)
for (j = i+1;j < m;j++)
if (a[i] > a[j]) //升序排序
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
/*
*冒泡算法多用于没有排序的数列,对其进行有序排列
*/
<2>插入算法:
#include <iostream>
#define N 10
using namespace std;
void fun(int a[],int m);
int main(void)
{
int i;
int a[N] = {1,2,3,5,6,7,8,9,10};
fun(a,N);
for (i = 0;i < N;i++)
cout << a[i] << ' ';
return 0;
}
void fun(int a[],int m)
{
int i,j,n;
n = 4; //要插入的数
for (i = 0;i < m;i++)
if (a[i] > n)
break;
for (j = m-2;j >= i;j--) // 插入适当的位置,使得数列仍按升序排列
a[j+1] = a[j];
a[i] = n;
}
/*
*插入算法多用于已经按升序或降序排列的有序数列,插入一个数后仍按升序或降序排列
*/
<3>简单选择排序法:
#include <iostream>
#define N 10
using namespace std;
void fun (int a[],int m);
int main (void)
{
int i;
int num[N] = {7,9,2,5,0,3,1,4,6,8};
fun(num,N);
for (i = 0;i < N;i++)
cout << num[i] << ' ';
cout << endl;
return 0;
}
void fun(int a[],int m)
{
int i,j,temp;
int flag;
flag = temp = 0;
for (i = 0;i < m-1;i++)
{
temp = a[i];
flag = i;
for (j = i+1;j < m;j++)
if (a[j] < temp)
{temp = a[j];flag = j;}
if (flag == i)
continue;
a[flag] = a[i];
a[i] = temp;
}
}
/*选择排序法同样多应用于没有排序的序列,对其进行有序排列,但较之冒泡排序,程序执行效率更高*/