码迷,mamicode.com
首页 > 编程语言 > 详细

基础算法分析

时间:2019-08-16 00:19:44      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:order   rgs   key   out   --   int   name   ada   子序列   

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

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












基础算法分析

标签:order   rgs   key   out   --   int   name   ada   子序列   

原文地址:https://www.cnblogs.com/zhichun/p/7526026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!