zoukankan      html  css  js  c++  java
  • 程序设计基础之算法篇

    计算机程序从根本上看包括两方面的内容:数据结构,算法。因此从某种意义上说,程序=数据结构+算法。

    今后将逐步的学习算法与数据结构。

     

     

    (1)直接插入排序(升序)

    顾名思义,这个排序算法和“插入”有关。其基本思想是每步将待排序的记录,按照其大小插入到前面已经排序的子序列中合适位置(从后向前找合适位置),直到全部插入序列完为止。其基本操作将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。

    具体步骤如下图:

     

    java实现代码如下: 

    for(int i=1;i<a.length;i++){    //控制比较的轮数

    temp=i;   //记录操作数

    int j=0;

    for(j=i-1;j<=0;j--){

    if(a[j]>temp){

    a[j+1]=a[j];

    }else{

    break;

    }

    }

    if(a[j+1] !=temp){

    a[j+1]=temp;

    }

    }

     

    (2)二分查找法(折半查找法)

    该算法针对的对象是已经排好序的序列,其基本思想是取出序列中居中的元素,待查找数与中值元素比较,若大于中值则丢弃中值左侧部分,反之丢弃右侧部分,循环往复找到与待查找值相等的元素。

    例如:int [ ] A={1,2,3,4,5,6,7},若查找7,7大于中值4,舍掉123,数组为{4,5,6,7},此刻中值为6,6小于7,丢弃45,数组为{6,7},中值为7,与待查找值相等。输出7的原始下标。

    java代码实现如下:

     

    public int binarySearh(int[] A,int key){   //参数为待查找的数组与待查找值

    int start=0;  //开始下标

    int end=A.length-1;//结束下标

    while(start <=end)

    int middle =(start+end)/2;//中值下标

    if(A[middle]>key){

    end= middle-1;

    }else(A[middle]<key)

    start=middel+1;

    }else{

    system.out.println("该元素的下标为:"+middle)

    }

    return -1;

    }

     

     

     

     

     

     

     

  • 相关阅读:
    微信下载远程图片的公用方法
    微信接口调用
    微信
    post方法
    asp.net pagebase获取缓存的方法
    sql查询最大id
    Controller里写自己需要的Action,参数的名字必须和路由设置的参数名一致

    递归调用
    队列及其应用
  • 原文地址:https://www.cnblogs.com/lijojo6/p/10717527.html
Copyright © 2011-2022 走看看