3つの基本的な並べ替えアルゴリズム

プログラマーとして、最近アルゴリズムを学んでいるので、いくつかの並べ替えアルゴリズムを確認したいと思います。この記事のすべての並べ替えはのためのもの升序であり、説明コードは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:写真はインターネットから来ている

おすすめ

転載: blog.csdn.net/qq_43475285/article/details/106095539