C++中用冒泡排序算法对一个数组中的元素进行排序

来源:互联网 发布:信阳师范网络教学空间 编辑:程序博客网 时间:2024/06/07 19:55

》冒泡排序法可以形象地描述为:使较小的值像空气泡一样逐渐“上浮”到数组的顶部,而较大的数值逐渐“下沉”到数组的底部。这种排序技术要排好几轮,每一轮都要比较连续的数组元素对。如果某对数值是按升序排列,那就保持原样。如果按降序排列,就交换它们的值。

       例:

#include<iostream>using namespace std;void bubble(int v[],int size);int main(){int vn[]={21,25,26,45,12,69,74,49,83,10};int len=sizeof(vn)/sizeof(int);           //计算数组长度for(int i=0;i<len;i++)                    //输出排序前的数组cout<<vn[i]<<",";cout<<endl<<endl;bubble(vn,len);system("pause");return 0;}void bubble(int v[],int size){int i,temp;for(int p=1;p<size;p++){for(i=0;i<size-p;i++)if(v[i]>v[i+1]){temp=v[i];v[i]=v[i+1];v[i+1]=temp;}for(i=0;i<size;i++)cout<<v[i]<<",";cout<<endl;}}
运行结果:
  

在该程序中,bubble函数通过一个二重循环来完成冒泡排序。其中内层循环用于将当前未排序的数组元素中最大的元素招出来,并放到最后一个位置,然后再对未排序的元素做相同的操作。如上例,最开始数组中未排序的元素下标范围为0到size-1,第一次内层循环结束时,将最大的元素交换到size-1的位置上;然后,第二次内层循环对剩下的未排序的元素(下标范围为0到size-2)完成同样的操作,知道所有元素被排序。

0 0