简介:本节中,我们考虑蛮力法在排序问题中的应用,给定一个可排序的n元素序列,将他们按照非降序方式重新排列。
- 选择排序
源程序:
#include<stdio.h>
int a[100];
int num;
void swap(int a[100],int c,int b)
{
int t;
t=a[c];
a[c]=a[b];
a[b]=t;
}
void selectionsort(int a[100])
{
int i;
int j;
int min;
for(i=0;i<=num-2;i++)
{
min=i;
for(j=i+1;j<=num-1;j++)
if(a[j]<a[min])
min=j;
swap(a,i,min);
}
}
void printing(int a[100])
{
int i;
for(i=0;i<num;i++)
printf("%d ",a[i]);
}
int main()
{
int i;
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d",&a[i]);
}
selectionsort(a);
printing(a);
}
- 冒泡排序
源程序如下:
void Bubblesort(int a[100])
{
int i;
int j;
for(i=0;i<=num-2;i++)
{
for(j=0;j<=num-2-i;j++)
{
if(a[j+1]<a[j])
swap(a,j+1,j);
}
}
}
蛮力法的第一个应用就是得到一个算法,此算法可以通过适度的努力来提升它的性能。
冒泡排序优化,待续。