zoukankan      html  css  js  c++  java
  • C语言:“冒泡排序”与“二分法”

    1.冒泡排序:

      what:将元素进行两两比较,大的(小的)向后排。

      when:数组中有多个元素,需要进行比较排序比较的时候使用。

      how:N个数字来排队,两两比较小靠前。(升序)

        外层循环:N-1(控制比较的轮数)

        内层循环:N-1-i(控制每轮比较的的次数,i代表外层循环变量)

      for example:

            

    int num[5];
    int i,k,j,temp;
    for(i=0;i<5;i++)
    {
    printf("请输入5个元素 ");
    scanf("%d",&num[i]);
    }
    for(i=0;i<4;i++)
    {
      for(k=0;k<4-i;k++)
      {
        if(num[k]>num[k+1])//注意不能是num[k]>num[k-1]
        {
        temp=num[k];
        num[k]=num[k+1];
        num[k+1]=temp;
        }
      } 
    }
    for(j=0;j<5;j++)
    {
    printf("%d ",num[j]);
    }

      

    2.二分法查找(折半查找):前提查找的元素必须有序。

      what:将待查找的元素与数组中的中间位置元素进行比较。

      when:要查找数组中某一元素。

      how:将待查找的数字与数组中的中间位置进行比较。
         如果比中间位置的元素值小,去左边查找(更改结束位置)。
         如果比中间位置的元素值大,去右边查找(更改起始位置)。

      for example:

    int nums[9]={1,2,3,4,5,6,7,8,9};
    int i=0,left,right,mid,search;
    left=0;
    right=8;
    printf("请输入要查找的值 ");
    scanf("%d",&search);
    while(left<=right)  //当为偶数序列时会出现相等的情况
    {

      i++;
      mid=(left+right)/2;
      if(search<nums[mid])
      {
        right=mid-1;
      }
      else if(search>nums[mid])
      {
        left=mid+1;
      }
      else
      {
        break;
      } 

    }

    printf("查找这个%d一共用了%d次 ",search,i);

  • 相关阅读:
    SolidWorks 2-12 拉伸特征03
    css记
    微信小程序的wxss好难啊,记录我的搞笑界面
    redis的学习使用,第二章
    本周学习Task-Rocketmq
    springcloud-ribbon的使用
    eclipse上使用svn更新代码
    新入职感觉
    在windows里面的数据库里面存emoji表情
    centos7,关闭mysql。出现mysql启动不了的情况
  • 原文地址:https://www.cnblogs.com/kuangzhisen/p/6863454.html
Copyright © 2011-2022 走看看