插入排序
- 基本思想:
1、将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
2、从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b9eeb11f095260b3aa67ae6acfb08fe2.jpeg#pic_center)
代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int a[101],n;
void insert_sort(int t){
int i,j;
for(i=2;i<=n;i++){
if(a[i]<a[i-1]){
a[0]=a[i];
j=i-1;
while(a[j]>a[0]){
a[j+1]=a[j];
j--;
}
a[j+1]=a[0];
}
}
return;
}
int main(){
int i;
scanf("%d",&n);
srand(unsigned(time(NULL)));
for(i=1;i<=n;i++){
a[i]=rand()%100+1;
printf("%d ",a[i]);
}
printf("\n");
insert_sort(n);
for(i=1;i<=n;i++){
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
选择排序
- 基本思想:
1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3、重复第二步,直到所有元素均排序完毕。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4ad6aff2a5ffddd9b456e61da497fd63.gif#pic_center)
代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int a[100],n;
void select_sort(int n){
for(int i=1;i<n;i++){
int min=i;
for(int j=i+1;j<=n;j++){
if(a[j]<=a[min]){
min=j;
}
}
if(min!=i){
swap(a[min],a[i]);
}
}
}
int main(){
scanf("%d",&n);
srand(unsigned(time(NULL)));
for(int i=1;i<=n;i++){
a[i]=rand()%100+1;
printf("%d ",a[i]);
}
printf("\n");
select_sort(n);
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
冒泡排序
- 基本思想
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
![](https://i-blog.csdnimg.cn/blog_migrate/608988a9b1f435a6bc6f4810da049577.gif)
代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int a[100],n;
void bubble_sort(int n){
for(int i=1;i<n;i++){
for(int j=1;j<=n-i;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
}
}
}
}
int main(){
scanf("%d",&n);
srand(unsigned(time(NULL)));
for(int i=1;i<=n;i++){
a[i]=rand()%100+1;
printf("%d ",a[i]);
}
printf("\n");
bubble_sort(n);
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
printf("\n");
}