计算机程序从根本上看包括两方面的内容:数据结构,算法。因此从某种意义上说,程序=数据结构+算法。
今后将逐步的学习算法与数据结构。
(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;
}