• 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);

  • 相关阅读:
    Elasticsearchheader、Kibana实现对ES的可视化
    记录Elasticsearch 分片恢复问题
    跨域问题处理手册
    MySQLJSON与虚拟列结合使用提升性能
    Mysql 备份恢复与xtrabackup备份
    Delphi中将ShowMessage,MessageDlg, MessageBox,InputBox,InputQuery及任意模态窗口相对主窗口(父窗口、母窗口)居中
    Python里的引用与拷贝规律
    「Codeforces 1644F」Basis
    记录
    swift 标签2
  • 原文地址:https://www.cnblogs.com/kuangzhisen/p/6863454.html
Copyright © 2020-2023  润新知