学习目标:通过本篇文章,你可以详细地了解四大排序问题的最简单的排序方法(选择排序、插入排序、冒泡排序、快速查找规定位置排序)
学习内容:
1、选择排序法
2、插入排序法
3、冒泡排序法
4、快速查找规定位置排序
话不多说,代码奉上
选择排序正序输出代码
#include <stdio.h>
int main()
{
int i,j,minp,t,a[6]={5,7,2,1,3,4};
for(i=0;i<5;i++)
{
minp=i;
for(j=i+1;j<6;j++)
{
if(a[j]<a[minp])
{
minp=j;
}
}
if(minp!=i)
{
t=a[i];
a[i]=a[minp];
a[minp]=t;
}
}
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
return 0;
}
选择排序逆序输出代码
#include <stdio.h>
int main()
{
int i,j,maxp,t,a[6]={5,7,2,1,3,4};
for(i=0;i<5;i++)
{
maxp=i;
for(j=i+1;j<6;j++)
{
if(a[j]>a[maxp])
{
maxp=j;
}
}
if(maxp!=i)
{
t=a[i];
a[i]=a[maxp];
a[maxp]=t;
}
}
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
return 0;
}
插入排序输出代码
#include <stdio.h>
int main()
{
int a[6]={7,2,3,6,4,1};
int i,j,cur;
for(i=1;i<6;i++)
{
cur=a[i];
for(j=i-1;j>=0&&a[j]>cur;j--)
{
a[j+1]=a[j];
}
a[j+1]=cur;
}
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
return 0;
}
冒泡排序正序输出代码
#include <stdio.h>
int main()
{
int a[10]={3,2,1,5,6,4,8,7,9,0};
int i,j,t,changed;
for(i=9;i>=1;i--)
{
changed=0;
for(j=0;j<=i;j++)
{
if(a[j]>a[j+1])
{
changed=1;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
if(changed==0)
break;
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
冒泡排序逆序输出代码
#include <stdio.h>
int main()
{
int a[10]={3,2,1,5,6,4,8,7,9,0};
int i,j,t,changed;
for(i=0;i<9;i++)
{
changed=0;
for(j=0;j<9-i;j++)
{
if(a[j+1]>a[j])
{
changed=1;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
if(changed==0)
break;
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
快速查找规定位置输出代码
#include <stdio.h>
int main()
{
int a[10]={3,2,1,5,6,4,8,7,9,0};
int i,j,cur;
i=0;
j=9;
cur=a[0];
while(i<j)
{
while(i<j)
{
if(a[j]>cur)
j--;
else
break;
}
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j)
{
if(a[i]<cur)
i++;
else
break;
if(i<j)
{
a[j]=a[i];
j--;
}
}
}
a[i]=cur;
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}