算法原理:
第一趟:从j=0开始,比较相邻的两个数a[j]和a[j+1],如果a[j]>a[j+1],则交换他俩的位置,这样会将大的数放在后面。每比较一次让j++,当j=length-1时终止。
这样一趟走完,最后面的数应该是最大数。
那么第二趟,还是从0开始,只不过这次j的终止条件是j=length-2。第二趟走完,最后两个数应该是数组中最大的两个数并且有序排列。
重复若干趟,直到j的终止条件是j=0
算法分析:(部分自于百度百科)
时间复杂度
#include "stdafx.h" #include<iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a[10]= {9,2,4,1,5,0,6,7,3,8}; for(int i =9;i>0;i--) { for(int j=0;j<i;j++) { if(a[j]>=a[j+1]){ int tmp =a[j+1]; a[j+1]=a[j]; a[j]=tmp; } } } for (int i= 0; i < 10; i++){ cout<<a[i]; } system("PAUSE"); return 0; }
原文地址:http://blog.csdn.net/sparktank/article/details/25840951