冒泡排序和查找数组中最大的数及查找两个数中最大的数

来源:互联网 发布:爱淘宝精品推荐 编辑:程序博客网 时间:2024/06/07 02:00

一 求两个数中最大的数

      1 显示效果

     

     2  代码

    

#include <stdio.h>int main(){int a = 5, b = 8;  //求两个数中最大的数,并将最大的数放在变量a中,并打印出变量a的值int tmp = 0;if (a < b){tmp = a ;a = b;b = tmp;}printf("两个数中最大的数是%d" , a);getchar();return 0;}


二  求一个有10个整数的整形数组中的最大的整数,并将这个最大的数移动到数组最后的位置

1 显示效果


2 代码

#include <stdio.h>//打印数组void PrintArray(int a[], int len){int i = 0;for (i = 0; i < len; i++){printf("%d  ", a[i] );}}//选出最到的数并移动到数组的最后void MoveMaxToArrayEnd(int * a, int len){int i = 0 , tmp =0;for (i = 0; i < len-1; i++){if (a[i]>a[i + 1]){tmp = a[i];a[i] = a[i + 1];a[i + 1] = tmp;}}}int main(){printf("将数组中最大数移动大数组的最后\n");int a[10] = {3,5,2,6,0,9,7,4,8,1};printf("\n移动前的数据\n");PrintArray(a, 10);MoveMaxToArrayEnd(a, 10);printf("\n移动后的数据\n");PrintArray(a, 10);getchar();return 0;}


三 冒泡排序

    1 冒泡排序的算法:每次都是数组中相邻的两个数两两比较,每次选出最大的一个数,并进行交换。

    2 显示效果:

  3  代码

#include <stdio.h>/**       冒泡排序:每次都是数组中相邻的两个数两两比较,每次选出最大的一个数,并进行交换。执行完第一遍在10个数里选出这个数组里第一大的数(或第一小的数),放在数组的第10个位置(即数组下标为9的位置),执行完第二遍在9个数里选出这个数组里第二大的数(或第二小的数),放在数组的第9个位置(即数组下标为8的位置),.....执行完第十遍在1个梳理选出这个数组里第十的数(或第十小的数),放在数组的第1个位置(即数组下标为0的位置)**/void PrintfArray(int *a , int len){int i = 0;for (i = 0; i < len; i++){printf("%d  ", a[i]);}}void sort(int  a[] , int len){int i = 0 , j = 0 , tmp = 0;for (i = 0; i < len;i++){for (j = 0; j < len - 1; j++)//注意这里不能写成j< len ,如果这样会造成数组越界比较(a[9]会和a[10]比较,a[10]是个随机数,这样会造成错误){if (a[j]>a[j + 1]){tmp = a[j];a[j] = a[j + 1];a[j + 1] = tmp;}}printf("第%d趟比较\n", i+1);PrintfArray(a, len);printf("\n");}}int main(){int a[10] = { 3, 5, 2, 6, 0, 9, 7, 4, 8, 1 };int i = 0;printf("排序前的数据:\n");PrintfArray(a, 10);printf("\n---------------------------------\n");sort(a,10);//冒泡排序函数调用getchar();return 0;}



0 0
原创粉丝点击