プログラマーとして、最近アルゴリズムを学んでいるので、いくつかの並べ替えアルゴリズムを確認したいと思います。この記事のすべての並べ替えはのためのもの升序
であり、説明コードはjava
1ソートを選択
1.1プロセス分析
不確定な整数配列の場合、最初にi = 0の数を次のすべての数と比較し、最小の数i = jを見つけ、配列内の数を交換してから、i = 1からiまで比較します。 = num.length-1
1.2アニメーション分析
1.2アルゴリズムの説明
public class selectsort {
public static void main(String[] args) {
int[] num= {
2,3,5,4,1,9,8,7,56,3,66,56,52,51,20,32};//要排序的数组
selectsort(num);
for(int n:num) //增强型for语句用于输出排序后的数组
{
System.out.println(n);
}
}
public static void selectsort(int[] num) //构造方法
{
for(int i=0;i<num.length;i++)
{
int minindex=i;
for(int j=i+1;j<num.length;j++)
{
if(num[minindex]>num[j])
{
minindex=j;
}
}
swap(num,i,minindex);
}
}
public static void swap(int[] num,int i,int minindex)//交换下标为i和minindex中的数组元素
{
int temp;
temp=num[minindex];
num[minindex]=num[i];
num[i]=temp;
}
}
1.4複雑さ
時間の複雑さ:O(n ^ 2)
2挿入ソート
2.1アルゴリズムの説明
整数配列では、2番目の数値から始めて、前の数値と比較します。前の数値よりも小さい場合は、配列の左端に達するまで位置を入れ替えます。前の数値よりも大きい場合は、位置を入れ替えます。 3番目の数値のサイズを前の数値と比較し始めます
2.2アニメーション分析
2.3アルゴリズムコード
public class Insertsort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num= {
2,3,5,4,1,9,8,7,56,66,56,52,51,20,32};//要排序的数组
Insertsort(num);
for(int n:num) //增强型for语句用于输出排序后的数组
{
System.out.print(n+",");
}
}
public static void Insertsort(int[] num) //排序算法
{
for(int i=1;i<num.length;i++)
{
for(int j=i;j>0;j--)
{
if(num[j]<num[j-1])
{
swap(num,j-1,j);
}
else{
break;
}
}
}
}
public static void swap(int[] num,int index,int j)//交换两个数的下标
{
int temp;
temp=num[index];
num[index]=num[j];
num[j]=temp;
}
}
2.4複雑さ
時間の複雑さ:O(n ^ 2)
3バブルソート(バブルソートとも呼ばれます)
3.1アルゴリズムの説明
ソートする配列の場合、最初に添え字I = 0 +1から開始し、2つの数値iとi + 1に遭遇するたびに、num [i]> num [i ++ 1]の場合、2つの数値を交換します。最初のトラバーサルの後、最大の要素は右端にある必要があります。2番目のトラバーサルの後、最後から2番目のツリーも右側の2番目の位置にあります。num.length-1トラバーサルの後、プライムグループの要素は昇順で並べ替えられます
3.2動的分析
3.3アルゴリズムの説明
public class Bobblesort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num= {
2,3,5,4,1,9,8,7,56,66,56,52,51,20,32};//要排序的数组
Bobblesort(num);
for(int n:num) //增强型for语句用于输出排序后的数组
{
System.out.print(n+",");
}
}
private static void Bobblesort(int[] num) {
for(int i=0;i<num.length;i++)
{
for(int j=0;j<num.length-i-1;j++)
{
if(num[j]>num[j+1])
{
swap(num,j,j+1);
}
}
}
}
public static void swap(int[] num,int index,int j)//交换两个数的下标
{
int temp;
temp=num[index];
num[index]=num[j];
num[j]=temp;
}
}
3.4複雑さ
時間の複雑さ:O(n ^ 2)
は続く…
PS:写真はインターネットから来ている