一.选择排序
选择排序只对两个元素进行交换,比较时记忆最大数的下标 遍历一趟下来,最后只需将最大值放在对应位置即可;
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main (void)
{
int a[10],i,j,t,k;
srand(time(0));
for(i=0;i<10;i++)
{
a[i]=rand()%100;
printf("%d\t",a[i]);
}//随机赋100以内的值
for(i=0;i<9;i++)
{
k=i;
for(j=k+1;j<10;j++)
if(a[k]>a[j])
k=j;//记忆较大数下标
t=a[i];
a[i]=a[k];
a[k]=t;//只交换一次
}
printf("\n");
for(i=0;i<9;i++)
printf("%d\t,a[i]");
printf("\n");
}
二.插入排序
插入排序是动态排序,找到插入点后,将其后的元素向后全部移动
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int a[5],i,j,t;
srand(time(0));
for(i=0;i<5;i++)
{
a[i]=rand()%100;
printf("%d\t",a[i]);
}
for(i=1;i<5;i++)
{
t=a[i];
j=i-1;
while(j>=0&&t<a[j])
{
a[j+1]=a[j];
j--;
}//寻找插入点
a[j+1]=t;
}
printf("\n");
for(i=0;i<5;i++)
printf("%d\t",a[i]);
printf("\n");
}