A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. #include<stdio.h>
  2. int bubbleSort(int[] arr);
  3. int selectSort(int[] arr);
  4. int foreach(int[] arr,int key);
  5. int printArray(int[] arr)
  6. int main(){
  7.         int[] arr={9,4,1,8,6,5,1};
  8.         //冒泡排序
  9.         printArray(arr);
  10.         bubbleSort(arr);
  11.         printArray(arr);
  12.         //选择排序
  13.         printArray(arr);
  14.         selectSort(arr);
  15.         printArray(arr);
  16.         //找值
  17.     foreach(arr);
  18. }
  19. //冒泡排序
  20. int bubbleSort(int[] arr){
  21.         for(int i=0;i<size;i++){// 外层循环控制整个循环要比较的次数
  22.                 for(int j=0;j<size-1-i;j++){//内循环每循环完一次总有一个最大值交换到末尾,将比较次数减i,减一是为了防止脚标越界
  23.                         if(arr[j]>arr[j+1]){//判断数组中一对相邻数据,进行交换,大的元素下沉
  24.                             int temp=arr[j];// 定义一个第三方变量用于存储数组中要比较的的一个元素
  25.                                    arr[j]=arr[j+1];//将后一个要比较的元素放到第一个元素中
  26.                                    arr[j+1]=temp;
  27.                         }
  28.                 }
  29.         }
  30. //选择排序
  31. int selectSort(int[] arr){
  32.         for(int i=0;i<size-1;i++){//外层循环控制总的比较次数
  33.                 for(int j=i+1;j<size;j++){//内循环j=i+1,每次比较第二元素总是第一个元素的后一位
  34.                         if(arr[i]>arr[j]){//设定第一个元素为最大值,与其后一位元素比较大小,每次循环后第二元素往后移一位
  35.                            int temp=arr[i];//交换两个数据元素,将小值放在固定位大值往后放
  36.                            arr[i]=arr[j];
  37.                            arr[j]=temp;       
  38.                         }
  39.                 }
  40.         }
  41. }
  42. //找值
  43. int foreach(int[] arr,int key){//找到指定元素在数组中的存储位置
  44.         for(int i=0;i<size;i++){//遍历数组进行查找
  45.                 if(arr[i]==key){//如果找到
  46.                         return i;//返回对应的脚标
  47.                 }else{//否则没有找到返回负一
  48.                         return -1;
  49.                 }
  50.         }
  51. }
  52. //打印数组元素
  53. int printArray(int[] arr){//输出打印数组
  54.         printf("[");
  55.         for(int i=0;i<size;i++){//遍历整个数组进行输出
  56.                 if(arr[i]<size-1){
  57.                         printf("%d,",arr[i]);
  58.                 }else{
  59.                         printf("%d]\n"arr[i]);
  60.                 }
  61.         }
  62. }
  63. }
复制代码

1 个回复

正序浏览
好详细啊,冒泡不是太懂,复制研究下!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马