简单排序
选择、冒泡、插入排序:
知识链接: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 */