程序设计基础之算法篇

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

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

 

 

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

}

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/lijojo6/p/10717527.html