データ構造並べ替えアルゴリズム

3277 ワード

ソートアルゴリズム
    :1.      
          	   2.    
    :1.      
	   2.   
    :1.    
	   2.    
1泡の並べ替え:
                               ,            ,     :(  -1) ,     :(     )
   :
       for(int i = n-1;i>0;i--)
       { 
for(int j =0;j
2.並べ替えの挿入
         :(  -1)  ,    ,          ,           ,           ,                   ,          ,
          ,(                    ,           ,            ,               ,           )。	
   :
        for(int i=1,i0 && temp 
3.交換ソート
               temp,                   temp,   arr[temp] arr[0]  , temp          ,       , arr[n-1] arr[temp]    ,
   arr[temp] ,          temp,    。
    :
int temp = 0;
for(int i = 0;iarr[j])
	temp = j;
	}
if(temp !=i)
{arr[temp] arr[i]  }
}
4.快速並べ替え
           ,                     ,          ,               -1   ,     -1        (       
  ,          ,          ,     )      。
    :
function(int arr[],int start,int end){
int i = start,j = end,int mid = (start+end)/2;int temp = arr[mid];
while(startarr[start];start++)
if(startmid && temptemp){    arr[mid] = arr[end];   mid = end;}
arr[mid] = mid;   
if(mid-start>1)    function (arr,start,mid-1);
if(end-mid)>1)    funciton (arr,mid+1,end);
}

  :	    :{45 ,38, 66, 90 ,88 ,10 ,25}


        45   ,                 ,            ,        。
  25   ,25<45        {25 ,38 ,66 ,90 ,88, 10,45}

,   
                25          ,            ,          。     25      45            45   66,
                              {25, 38,45,90, 88, 10,66}


                 66  ,    45    ,            ,          。     66   45    ,
          45   10,      {25, 38,10,90, 88,45, 66}


                  10  ,    45    ,             90,      {25, 38 ,10,45 ,88 ,90,66}


        90 45    ,          45  ,      。
     90   45            45   ,           。            ,                    ,
                   。

              {25, 38 ,10,45, 88, 90, 66},
            45         45,45      45。                          ,    ,            。
5.直接並べ替えを選択する
          :  i      ,  n-1     , n-i+1           ,   i(1<=i<=n-1)     
     :
void SelectSort(List R,int n)
{
int min,i,j;
for(i=1;i<=n-1;i++)
{
min = i;
for(j=i+1;j<=n;j++)
{
if(R[j].key
6.ヒルの並べ替え
    : 【8,9,1,7,2,3,5,4,6,0】
                       gap=length/2 = 5;         5 ,【8,3】,【9,5】,【1,4】,【7,6】,【2,0】,    5           ,   【3,5,1,6,0,8,9,4,7,2】
       gap=5/2=2,     2 【3,1,0,9,7】【5,6,8,4,2】,            ,  【0,2,1,4,3,5,7,6,9,8】
     gap=2/2=1,  ,     1 【0,2,1,4,3,5,7,6,9,8】,         ,  【0,1,2,3,4,5,6,7,8,9】
   :
public static int[] ShellSort(int [] array){
int len = array.length;
int temp,gap = len/2;
while(gap > 0) {
   for(int i=gap ;i= 0&& array[preIndex] >temp) {
	array[preIndex +gap] =- array[preIndex];
	preIndex -= gap;
	}
	array[preIndex  + gap] = temp;
	}
gap / =2;
}
return array;
}