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

    xiaoxiao2021-03-25  13

    一 求两个数中最大的数

          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; }

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

    最新回复(0)