基本的なアルゴリズムで解析

これは次のように基本的なアルゴリズムのクラスで、次の列内のデータ構造を記述します:

1.挿入ソート

2.マージソート

3.ソート交換

4.選択ソート

5.ソート・グループ

 

挿入ソートアルゴリズム

 
アイデア:
 
 
最初のステップは、関数呼び出しは1の値に0のシーケンスに配列を挿入サブアレイ
第二の部分、関数呼び出しインサートは、配列は、0-1にシーケンスに2の値を挿入したサブアレイ
第三に、関数呼び出しインサートは、配列は、0-2に3の値に配列中に挿入されたサブアレイ
。..
最後に、サブアレイ0-N-1の配列に挿入された機能呼び出し、n個のシーケンスの値を挿入
 
 
コードの解釈:
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;

}



}

 
 
 
 
 
 
 
 
 
選択ソート
 
選択ソート
 
 
  1. 最小値、および最初の交流を探します
  2. 見つかりました第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
おすすめ