演算法筆記 第四章 排序(選擇排序 插入排序)
阿新 • • 發佈:2018-12-13
選擇排序:
#include<iostream> using namespace std; void selectsort(int a[],int n){//陣列傳的就是首地址 for(int i=0;i<n-1;i++){ int min=i; for(int j=i+1;j<n;j++){ if(a[j]<a[min]) min=j; } if(min!=i){ int t=a[min]; a[min]=a[i]; a[i]=t; } } } int main(){ const int N=10; int a[N]={3,4,5,2,1,7,6,9,8,10}; selectsort(a,N); for(int i=0;i<N;i++){ cout<<a[i]<<" "; } cout<<endl; return 0; }
(直接)插入排序:
直接插入排序基本思想是每一步將一個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。
程式碼實現
#include<iostream> using namespace std; void insertsort(int a[],int n){ for(int i=1;i<n;i++){ int temp=a[i],j=i;//temp存當前要插入的值 j從i-1向前搜尋 while(j>0&&temp<a[j-1]){ a[j]=a[j-1]; j--; } a[j]=temp;//插入位置為j } } int main(){ const int N=10; int a[N]={3,4,5,2,1,7,6,9,8,10}; insertsort(a,N); for(int i=0;i<N;i++){ cout<<a[i]<<" "; } cout<<endl; return 0; }