基础算法分析

笔者将在接下来的栏目中写数据结构的基本算法类如下:

1.插入排序

2.归并排序

3.交换排序

4.选择排序

5.基排序

插入排序算法

 
思路:
 
 
第一步,调用insert函数,将序列为1的值插入到序列为0中子数组中
第二部,调用insert函数,将序列为2的值插入到序列为0-1中子数组中
第三部,调用insert函数,将序列为3的值插入到序列为0-2中子数组中
..
Finally,调用insert函数,将序列为n的值,插入到子序列为0-n-1的子数组中
 
 
代码解读:
public class insertionSort {

public static void main(String[] args) {

int[] array = {7,6,4,8,1,4,9,0,11,2,12,-2};


for(int i=1;i<array.length;i++)
{
//array是数组,i-1是key值左边的一个索引,也就是i-1.而array[i]
//代表的值是当前的key值
insertionSort(array,i-1,array[i]);
}

for(int i:array)
{
System.out.println(i);
}

}

static void insertionSort(int[] array,int leftIndex,int value)
{
//将key的初始值设置key的索引。
int key=rightIndex+1;
//从子数组开始,依次比较array[j]的值(子数组的值是否大于key值,如果大于,则停止,否则就减减。)
//这一步的目的是,将大于key值的子数组移位,直到空出一个j值,此时左边是小于key 值,右边是大于key值
for(int j=rightIndex;j>=0&&array[j]>value;j--)
{
array[j+1]=array[j];
key=j;
}
//然后将value值,赋予到这个中间位置。停止一轮循环。

array[key]=value;

}



}

 
 
 
 
 
 
 
 
 
选择排序
 
SelectionSort
 
 
  1. 找到最小的值,与第一个交换
  2. 找到第二个最小的值,与第二个交换
  3. 找到第三个最小的,与第三个交换
  4. 重复找到下一个最小的值,与正确的位置交换。直到数组排序完成。
 
 
 
public class SelectionSort
{

public static void main(Sting[] args)
{
int[] array={2,3,4,12,23,12,21};
//依次开始,直到最后一个数值
for(int i=0;i<array.length;i++)
{
int minIndex=findMinIndex(arr,i);
swap(arr,i,minIndex);
}

System.out.print("final value:");
for(int item:array)
{
System.out.print(item+" ");
}
}
//从启始数值开始,直到最后一个数值,找到最小的数,并返回索引。
static int findMinIndex(int[] array,int startIndex)
{
int minValue=array[startIndex];
int minIndex=startIndex;

for(int i=minIndex+1;i<array.length;i++)
{
if(array[i]<minValue)
{
minIndex=i;
minValue=array[i];
}
}

return minIndex;
}
//交换数值
static void swap(int[] array,int firstIndex,int secondIndex)
{
int temp=array[firstIndex];
array[firstIndex]=array[secondIndex];
array[secondIndex]=temp;
}
}












猜你喜欢

转载自www.cnblogs.com/zhichun/p/7526026.html