一、冒泡排序
原理:先从数组中找到最大值(或最小值)并放到数组最右端(或最左端),然后在剩下的数字中找到次大值(或次小值),以此类推,直到数组有序排列。算法的时间复杂度为O(n^2)。
代码实现:
for(int i=0;i<n;i++)
for(int j=0;j<n-1-i;j++)
{
int t;
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
二、插入排序
原理:不断地将元素插入到有序队列中,使新的序列依然有序。算法的时间复杂度为O(n^2)。
代码实现:
int key,m;
for(int j=0;j<n-1;j++)
{
key=a[j+1];
m=j;
while(m>=0&&a[m]>key)
{
a[m+1]=a[m];
a[m]=key;
m=m-1;
}
}
三、选择排序
原理:不断选择最小的元素与当前待排序列的最左侧元素交换。算法的时间复杂度为O(n^2)。
代码实现:
int k,t;
for(int i=0;i<n-1;i++)
{
k=i;
for(int j=i+1;j<n;j++)
{
if(a[j]<a[k])
{
k=j;
}
}
t=a[i];
a[i]=a[k];
a[k]=t;
}