C++冒泡排序和选择排序

冒泡排序:比如有5个数,相邻的两个比较,第一轮总共比较4次,最大的那个沉在最后,他的位置定了,就不管他了,第二轮剩下4个数,继续比较,总共比较3次,一次类推,n个数,比较n-1轮,在第i轮中比较n-i次

选择排序:比如有5个数,将5个数中最小的与a[0]交换,再将剩下的4个数中的最小的与a[1]交换,以此类推,n个数,共比较n-1轮

#include<iostream>
using namespace std;
int main() {
	int a[10] = { 2,9,8,6,5,4,7,3,1,0 }, i = 0, j = 0, t = 0 , k = 0 ;
	int n = 10;
	cout << "原来:" << endl;
	for (i = 0;i < n;i++)
		cout << a[i]<<" ";
	cout << endl;
	//选择排序
	for (i = 0;i < n-1;i++) {
		t = i;
		for (j = i+1;j < n;j++) {
			if (a[t] > a[j])
				t = j;
			k = a[t];a[t] = a[i];a[i] = k;
		}
	}
	cout << "选择排序:" << endl;
	for (i = 0;i < n;i++)
		cout << a[i] << " ";
	cout << endl;
	//冒泡排序
	for (i = 0;i < n - 1;i++) {
		for (j = 0;j < n-1-i;j++) {
			if (a[j] > a[j+1])
			{
				k = a[j+1];a[j+1] = a[j];a[j] = k;
			}
		}
	}
	cout << "冒泡排序:" << endl;
	for (i = 0;i < n;i++)
		cout << a[i] << " ";
	return 0;
}
经验分享 程序员 微信小程序 职场和发展