算法笔记 第四章 排序(选择排序 插入排序)

选择排序:

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

(直接)插入排序:

  直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。

   

图片来自:https://www.cnblogs.com/chengxiao/p/6103002.html

代码实现 

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

猜你喜欢

转载自blog.csdn.net/hza419763578/article/details/82931541