第四章 算法初步
4.1 排序
4.1.1 选择排序
对n个元素进行排序,进行n趟,每趟从待排序元素中选出最小的元素,与待排序部分的第一个元素交换。复杂度n的平方。
代码:
`#include <bits/stdc++.h>
using namespace std;
#define maxn 5
void selectsort(int a[],int n);
int main()
{
int A[maxn]={5,4,3,2,1};
selectsort(A,5);
int i=0;
for(i=0;i<5;i++)
{
printf("%d",A[i]);
}
return 0;
}
void selectsort(int a[],int n)
{
int i=0,j;
int k;
for(i=0;i<n;i++)
{
k=a[i];
for(j=i;j<n;j++)
{
if(a[j]<a[k])
{
k=j;
}
}
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
`
4.1.2 插入排序
初始有序为第一个元素,然后从待排序元素中选择第一个元素插入到前面已有序的元素中。关键是前面是有序的元素。
代码:从小到大排序
#include <bits/stdc++.h>
using namespace std;
#define maxn 5
void insertsort(int a[],int n);
int main()
{
int A[maxn]={5,4,3,2,1};
insertsort(A,5);
int i=0;
for(i=0;i<5;i++)
{
printf("%d",A[i]);
}
return 0;
}
void insertsort(int a[],int n)
{
int i=0,j;
int temp;
for(i=1;i<n;i++)
{
temp=a[i];
j=i;
while(j>0&&temp<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=temp;
}
}`