排序
来源:互联网 发布:班班通教学软件下载 编辑:程序博客网 时间:2024/06/06 14:12
本篇采用的是C语言版,希望能对初学者有帮助。若有不足请指教qq:952678218. 若有指教必有酬谢
1.插入排序
从第一个数开始默认为一个有序数列然后将后面的数依次插入
#include<stdio.h>void InsertSort(int a[],int n)
{
int x,j;
for(int i=1;i<n;i++)
{
for(j=i;j>0&&a[j]>a[j-1];j--)
{
x=a[j];
a[j]=a[j-1];
a[j-1]=x;
}
}
for(int i=0;i<n;i++)
{
printf("%d\n",a[i] );
}
}
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
InsertSort(a,8);
return 0;
}
2.选择排序
先选择最大值排到第一位然后依次选择剩下数的最大值排序
#include<stdio.h>
void SelectSort(int a[],int n)
{
int x,j,max;
for(int i=0;i<n;i++)
{
max=a[i];
for(j=i;j<n;j++)
{
if(a[j]>=max)
{
max=a[j];
x=j;
}
}
a[x]=a[i];
a[i]=max;
}
for(int i=0;i<n;i++)
{
printf("%d",a[i]);
}
}
int main()
{
int a[8]={1,2,3,4,5,6,7,8,};
SelectSort(a,8);
return 0;
}
3.冒泡排序
前后比较大小交换位置
#include<stdio.h>
void SelectSort(int a[],int n)
{
int x,j;
for(int i=1;i<n;i++)
{
for(j=1;j<n;j++)
{
if(a[j]>a[j-1])
{
x=a[j];
a[j]=a[j-1];
a[j-1]=x;
}
}
}
for(int i=0;i<n;i++)
{
printf("%d",a[i]);
}
}
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
SelectSort(a,8);
return 0;
}