冒泡法排序C++

xiaoxiao2021-02-28  2

参考博客:http://blog.sina.com.cn/s/blog_5c5bc9070100y4un.html

http://c.biancheng.net/cpp/html/2443.html

基本思想及说明

冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。

冒泡排序的基本思想:从数组的第一个数开始,相邻两数进行比较,经过交换,小的数放在前面,大的数放在后面,一直到最后一个数与倒数第二个数比较完,这样比较一轮后,数组中最大的数“下沉”到了数组的最后;然后,新的一轮的比较又是从第一个数开始。。。。如果数组中有N个元素,则共需要比较N-1轮。

形象地描述这种排序方法:每次比较都会使较小的值像气泡一样“上浮”,而较大的值逐渐“下沉”!

下面以对 3  2  4  1 进行冒泡排序说明。 第一轮 排序过程 3  2  4  1    (最初) 2  3  4  2    (比较3和2,交换) 2  3  4  1    (比较3和4,不交换) 2  3  1  4    (比较4和1,交换) 第一轮结束,最大的数4已经在最后面,因此第二轮排序只需要对前面三个数进行再比较。 第二轮 排序过程 2  3  1  4 (第一轮排序结果) 2  3  1  4 (比较2和3,不交换) 2  1  3  4 (比较3和1,交换 第二轮结束,第二大的数已经排在倒数第二个位置,所以第三轮只需要比较前两个元素。 第三轮 排序过程 2  1  3  4  (第二轮排序结果) 1  2  3  4  (比较2和1,交换) 至此,排序结束。

源代码

#include<iostream> using namespace std; void bubbleSort(int a[],int size); int main() { int array[]={34,65,12,43,67,5,78,10,3,70},k; int len=sizeof(array)/sizeof(int); cout<<"The orginal array are:"<<endl; for(k=0;k<len;k++) cout<<array[k]<<","; cout<<endl; bubbleSort(array,len); cout<<"The sorted array are:<<endl"; for(k=0;k<len;k++) cout<<array[k]<<","; cout<<endl; system("pause"); return 0; } void bubbleSort(int a[],int size) { int temp; for(int pass=1;pass<size;pass++) { for(int k=0;k<size-pass;k++) if(a[k]>a[k+1]) { temp=a[k]; a[k]=a[k+1]; a[k+1]=temp; } cout<<"第"<<pass<<"轮排序后:"; for(int i=0;i<size;i++) cout<<a[i]<<","; cout<<endl; } }运行结果:

转载请注明原文地址: https://www.6miu.com/read-2400048.html

最新回复(0)