C语言冒泡排序法:
{冒泡最终思想是 for嵌套循环 :
定义数组——随机数 a[i] = arc4random_uniform (随机N );并打印——for外不循环控制趟数=元素个数-1 ——for中 (i+j) = 定值(元素总个数) 内部控制循环次数 j<</b>(元素个数 - 1 - i)——//遍历数组查并打印
// 总结;**********************************************************************************************
1、开始是元素个数-1趟进行完毕 、
//第一趟
// for (int i = 0; i < 4 - 1; i ++) {
// if (arr[i] > arr[i + 1]) {
// int temp = arr[i];
// arr[i] = arr[i +1];
// arr[i + 1] = temp;
//
//
// }
// if (arr[i] > arr[i + 1]) {
// int temp = arr[i];
// arr[i] = arr[i +1];
// arr[i + 1] = temp;
//
//
// }
// }
2、每走完一趟要进行遍历数组
//遍历数组
// for (int i = 0; i < 4; i ++) {
// printf("%d\t",arr[i]);
// printf("%d\t",arr[i]);
// }
3、循环完内部进行外部循环来控制趟数:趟数 = 元素个数减1,并且新定义的 j + i= 元素总个数是定值;所以
j < 元素个数-1 - i;
// //外部循环用来控制趟数,比较的趟数等于元素个数-1
// // j + i = 4;
// for (int i = 0; i < 4 - 1; i ++) {
// for (int j = 0; j < 4 - i - 1; j ++) {
// if (arr[j] > arr[j + 1]) {
// int temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j +1 ] = temp;
// }
// }
// // j + i = 4;
// for (int i = 0; i < 4 - 1; i ++) {
// for (int j = 0; j < 4 - i - 1; j ++) {
// if (arr[j] > arr[j + 1]) {
// int temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j +1 ] = temp;
// }
// }
// }
4、最后再遍历数组查验:
// //遍历数组
// for (int i = 0; i < 4; i ++) {
// printf("%d\t",arr[i]);
// for (int i = 0; i < 4; i ++) {
// printf("%d\t",arr[i]);
// }
************************************************************************************************************************************
//#import
//
// int main( ) //主函数入口
// { //表示主函数开始
// int i,j; //定义整形变量i和j
// int grade[5],temp; //定义N维(N=5,也就是五维啦^^)整形数组和整形变量temp
// printf("输入5个数\n"); //在屏幕上显式“输入5个数”并且换行
// for(i=0;i<5;i++) //开始for循环,从i=0,每次加1,直到i=4,共需循环5次
// { //循环体开始
// scanf("%d",&grade[i]); //依次获取用户输入的整数值并存入数组grade中
// } //循环结束
// for(i=0;i<5;i++) //开始外层for循环,从i=0,每次加1,直到i=4
// { //外层循环体开始
// for(j=0;j<5-1-i;j++) //开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1
// { //内层循环体开始
// if(grade[j]
// { //如果整形数组前面的数比其后的小,执行以下语句
// temp=grade[j+1]; //将比较大的数赋值给temp
// grade[j+1]=grade[j]; //将比较小的数赋值给数组中后面的变量
// grade[j]=temp; //将比较大的数赋值给数组中前面的变量
// } //从此便完成大小变量的交换,使得大值往前放
// } //结束内层循环
// } //结外内层循环,完成排序
// printf("最后排序为:\n");//在屏幕显式“最后排序为:”并换行
// for(i=0;i<5;i++) //同开始的for循环类似
// { //开始循环输出
// printf("%d",grade[i]); //只是这里要逐个输出数组中的五个数值
// } //结束循环输出
// printf("\n"); //输出换行到屏幕,看不到什么效果,可删掉
// //结束main()函数
//
// int main( ) //主函数入口
// { //表示主函数开始
// int i,j; //定义整形变量i和j
// int grade[5],temp; //定义N维(N=5,也就是五维啦^^)整形数组和整形变量temp
// printf("输入5个数\n"); //在屏幕上显式“输入5个数”并且换行
// for(i=0;i<5;i++) //开始for循环,从i=0,每次加1,直到i=4,共需循环5次
// { //循环体开始
// scanf("%d",&grade[i]); //依次获取用户输入的整数值并存入数组grade中
// } //循环结束
// for(i=0;i<5;i++) //开始外层for循环,从i=0,每次加1,直到i=4
// { //外层循环体开始
// for(j=0;j<5-1-i;j++) //开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1
// { //内层循环体开始
// if(grade[j]
// { //如果整形数组前面的数比其后的小,执行以下语句
// temp=grade[j+1]; //将比较大的数赋值给temp
// grade[j+1]=grade[j]; //将比较小的数赋值给数组中后面的变量
// grade[j]=temp; //将比较大的数赋值给数组中前面的变量
// } //从此便完成大小变量的交换,使得大值往前放
// } //结束内层循环
// } //结外内层循环,完成排序
// printf("最后排序为:\n");//在屏幕显式“最后排序为:”并换行
// for(i=0;i<5;i++) //同开始的for循环类似
// { //开始循环输出
// printf("%d",grade[i]); //只是这里要逐个输出数组中的五个数值
// } //结束循环输出
// printf("\n"); //输出换行到屏幕,看不到什么效果,可删掉
// //结束main()函数
// ******************************经典例题*************************************
编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组。
//先定义两个数组
// int a[5] = {0};
// int b[5] = {0};
// int c [10] = {0};
// printf("\n排序前:\n");
// //打出两个随机数组
// for (int i = 0; i < 5; i ++) {
// a[i] = arc4random_uniform(100);
// b[i] = arc4random_uniform(100);
// printf("a[%d] = -\t,b[%d] = -\n",i,a[i],i,b[i]);
//
// }
// //外部循环控制趟数
// for (int i = 0; i < 5 - 1; i ++) {
// //内部控制循环次数
// for (int j = 0; j < 5 - 1 - i; j ++) {
// if (a[j] > a[j + 1]) {
// int x = a[j];
// a[j] = a[j + 1];
// a[j + 1] = x;
// }
// if (b[j] > b[j +1]) {
// int y = b[j];
// b[j] = b[j +1];
// b[j + 1] = y;
// }
// }
// }
// printf("\n排序后:\n");
// //遍历数组查看
// for (int i = 0; i < 5; i ++) {
// printf("a[%d] = -\t b[%d] = -\n",i,a[i],i,b[i]);
// }
// //将两个数组放到一个数组c中
// for (int i = 0; i < 10; i ++) {
// if (i < 5) {
// c[i] = a[i];
// } else {
// c[i] = b[i - 5];
// }
// }
对数组c进行升序排序
// for (int i = 0; i < 10- 1; i ++) {
// if (c[i] > c[i +1]) {
// int temp = c[i];
// c[i] = c[i + 1];
// c[i +1] = temp;
// }
// }
// //遍历循环查验
// printf("\n重组排序后:\n");
// for (int i = 0; i < 10; i ++) {
// printf("a[%d] = -\n",i,c[i]);
// int a[5] = {0};
// int b[5] = {0};
// int c [10] = {0};
// printf("\n排序前:\n");
// //打出两个随机数组
// for (int i = 0; i < 5; i ++) {
// a[i] = arc4random_uniform(100);
// b[i] = arc4random_uniform(100);
// printf("a[%d] = -\t,b[%d] = -\n",i,a[i],i,b[i]);
//
// }
// //外部循环控制趟数
// for (int i = 0; i < 5 - 1; i ++) {
// //内部控制循环次数
// for (int j = 0; j < 5 - 1 - i; j ++) {
// if (a[j] > a[j + 1]) {
// int x = a[j];
// a[j] = a[j + 1];
// a[j + 1] = x;
// }
// if (b[j] > b[j +1]) {
// int y = b[j];
// b[j] = b[j +1];
// b[j + 1] = y;
// }
// }
// }
// printf("\n排序后:\n");
// //遍历数组查看
// for (int i = 0; i < 5; i ++) {
// printf("a[%d] = -\t b[%d] = -\n",i,a[i],i,b[i]);
// }
// //将两个数组放到一个数组c中
// for (int i = 0; i < 10; i ++) {
// if (i < 5) {
// c[i] = a[i];
// } else {
// c[i] = b[i - 5];
// }
// }
对数组c进行升序排序
// for (int i = 0; i < 10- 1; i ++) {
// if (c[i] > c[i +1]) {
// int temp = c[i];
// c[i] = c[i + 1];
// c[i +1] = temp;
// }
// }
// //遍历循环查验
// printf("\n重组排序后:\n");
// for (int i = 0; i < 10; i ++) {
// printf("a[%d] = -\n",i,c[i]);
// }