冒泡排序:
简介:是指将一个无序序列按某个规则进行有序排列,而冒泡排序是排序算法中最基础的一种。
说明:现给出一个序列a,其中元素的个数为n,要求从小到大顺序排序。
代码:
# include <stdio.h>
int main(){
int a[10] = {3,1,4,5,2} ;
for (int i = 1;i <=4;i++){ //进行n - 1趟
//第i趟从a[0]到a[n-i-1]都与它们下一个数比较
for(int j = 0;j<5-i;j++){
if(a[j] > a[j+1]){ //如果左边的数更大,则交换a[j]和a[j+1]
int temp = a[j];
a[j] = a[j+1];
a[j+1]=temp;
}
}
}
for(int i=0;i<5;i++)
{
printf("%d",a[i]);
}
return 0;
}
插入排序
简介:
插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
说明:
对序列A的n个元素A[1]~A[n],令i从2到n枚举,进行n-1趟操作。
代码:
int A[maxn],n; //n为元素个数,数组下标为1~n
void insertSort(){
for(int i = 2; i <= n; i++){ //进行n-1趟排序
int temp = A[i],j=i; //temp临时存放A[i],j从i开始往前枚举
while (j > 1 && temp < A[j-1]){ //只要 temp小于前一个元素A[j-1]
A[j]=A[j-1]; //把A[j-1]后移一位至A[j]
j--;
}
A[j]=temp; //插入位置为j
}
}
简单选择排序:
简介:
选择排序是最简单的排序算法之一,指在简单选择排序过程中,所需移动记录的次数比较少。
说明:
对A中的元素A[1]~A[n],令i从1到n枚举,进行n趟操作,每趟从待排序部分[i,n]中选择最小的元素,令其与待排序部分的第一个元素A[i]进行交换,这样元素A[i]就会与当前有序区间[i,i-1]形成新的有序区间[1,i]。
代码:
void selectSort(){
for(int i = 1;i <= n;i++){
int k = i;
for(int j = i;j<=n;j++){
if(A[j] < A[k]){
k=j;
}
}
int temp = A[i];
A[i] = A[k];
A[k] = temp;
}
}