#include #include #include <stdlib.h> #include #include #include

using namespace std;

int size=10000;//随机数大小范围 bool a;//冒泡中判断值 int arr_zx[100000];//归并中临时数组 double arr_fd[100000]; char arr_zf[100000]; //冒泡排序(整型) void function_mp_zx(int dp_zx[],int num){ if(num<=1){ return; } int sl_zx=num-2; int itmp_zx=0;//中间量 while(sl_zx>=0){

	a=false;
	for(int i=0;i<=sl_zx;i++){
		if(dp_zx[i]>dp_zx[i+1]){
			itmp_zx=dp_zx[i];
			dp_zx[i]=dp_zx[i+1];
			dp_zx[i+1]=itmp_zx;
			a=true;
		}
	}
	if(a==false){
		break;
	}
	sl_zx--;
}

} //冒泡排序(浮点型) void function_mp_fd(double dp_fd[],int num){ if(num<=1){ return; } int sl_fd=num-2; double itmp_fd=0;//中间量 while(sl_fd>=0){ a=false; for(int i=0;i<=sl_fd;i++){ if(dp_fd[i]>dp_fd[i+1]){ itmp_fd=dp_fd[i]; dp_fd[i]=dp_fd[i+1]; dp_fd[i+1]=itmp_fd; a=true; } } if(a==false){ break; } sl_fd--; } } //冒泡排序(字符型) void function_mp_zf(char dp_zf[],int num){ if(num<=1){ return; } int l_zf=strlen(dp_zf)-2;char itmp_zf;bool a; while(l_zf>=0){ a=false; for(int i=0;i<=l_zf;i++){ if(dp_zf[i]>dp_zf[i+1]){ itmp_zf=dp_zf[i]; dp_zf[i]=dp_zf[i+1]; dp_zf[i+1]=itmp_zf; a=true; } } if(a==false){ break; } l_zf--; }

} 分析以上代码设计思路,并对算法进行描述内容:以上代码实现了三种冒泡排序算法,分别针对整型数组、浮点型数组和字符型数组。下面对算法进行描述:

  1. 冒泡排序(整型):函数名为function_mp_zx,接收一个整型数组dp_zx和数组元素个数num作为参数。首先判断数组个数是否小于等于1,如果是,则直接返回。然后定义一个中间变量itmp_zx和一个计数变量sl_zx,其中sl_zx初始化为num-2。在一个循环中,每次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置,并将a标记为true。当一次循环结束后,如果a为false,表示数组已经有序,可以提前结束循环。每次循环结束后,sl_zx减1,即减少需要比较的元素个数。最终得到一个有序的整型数组。

  2. 冒泡排序(浮点型):函数名为function_mp_fd,接收一个浮点型数组dp_fd和数组元素个数num作为参数。算法思路与冒泡排序(整型)相同,只是将中间变量itmp_zx的类型改为double。

  3. 冒泡排序(字符型):函数名为function_mp_zf,接收一个字符型数组dp_zf和数组元素个数num作为参数。算法思路与冒泡排序(整型)相同,只是将中间变量itmp_zx的类型改为char,并将比较操作改为字符的比较。

以上三种冒泡排序算法都是通过不断比较相邻元素并交换位置来实现的。每次遍历结束后,都会减少需要比较的元素个数,直到所有元素都有序。通过这种方式可以将数组按照升序排列。

C++ 冒泡排序算法实现及代码解析 - 整型、浮点型、字符型

原文地址: https://www.cveoy.top/t/topic/pfdn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录