1. 程式人生 > >演算法筆記 第四章 排序(選擇排序 插入排序)

演算法筆記 第四章 排序(選擇排序 插入排序)

選擇排序:

#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;
}