简单排序

选择、冒泡、插入排序:

知识链接:https://oi-wiki.org/basic/selection-sort/

算法模拟:https://visualgo.net/zh

代码实现:

#include<bits/stdc++.h>
using namespace std;

void Selection_sort(int n, int a[]){//选择排序 
    int k, temp;
    for(int i=1; i<=n; i++){
        k=i;
        for(int j=i+1; j<=n; j++)//在i~n之间的最小元素下标 
            if(a[j] < a[k])
                k=j;
        temp=a[i];//交换k、i位置的数值 
        a[i]=a[k];
        a[k]=temp;
    } 
}
void Bubble_sort(int n, int a[]){//冒泡排序
    int temp;
    for(int i=1; i<n; i++){//经过n-1趟 
        for(int j=1; j<=n-1; j++){//每趟交换相邻两数 
            if(a[j] > a[j+1]){
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }    
}
void Insertion_sort(int n, int a[]){//插入排序 
    int k, temp;
    for(int i=2; i<=n; i++){//从第2个数以后开始往前面插入,默认第1个数是有序的 
        temp=a[i];
        k=1;
        while(a[k] <= temp && k<i)k++;//找到正确的插入位置 k
        for(int j=i-1; j>=k; j--)a[j+1]=a[j];//将k之后的数往后挪 
        a[k]=temp;//将a[i]放到正确的位置 
    } 
}
int main()
{
    int n, a[105];
    cin>>n;
    for(int i=1; i<=n; i++)
        cin>>a[i];
    //Selection_sort(n, a);
    Bubble_sort(n, a);
    //Insertion_sort(n, a);
    for(int i=1; i<=n; i++)
        cout<<a[i]<<" ";
    return 0;
 } 
 /*
7
180 170 176 160 155 150 160
 */

 

posted @ 2022-05-13 20:49  TFLSNOI  阅读(48)  评论(0编辑  收藏  举报