zoukankan      html  css  js  c++  java
  • 算法导论:第二章总结

    SELECTION-SORT(A)
    
    n : length[A]
    	for j : 1 to n − 1
    		do smallest : j
    			for i : j + 1 to n
    				do if A[i] < A[smallest] 
    					then smallest : i
    			exchange A[j] and A[smallest]
    
    INSERTION-SORT(A)
    
    for j : 2 to length[A]
    	do key : A[j]
    	i : j-1
    	while i>0 and A[i]>key
    		do A[i+1] : A[i]
    			i : i-1
    	A[i+1] : key
    
    MERGE(A, p, q, r) 
    n1 : q-p+1 
    n2 : r-q 
    create arrays L[1..n1+1] and R[1..n2+1]
    for i : 1 to n1     
    	do L[i] : A[p+i-1] 
    for j : 1 to n2     
    	do R[j] : A[q+j]
    L[n1+1] :  ∞
    L[n2+1] :  ∞
    i : 1
    j : 1
    for k : p to r
    	do if L[i]<=R[j]
    		then A[k] : L[i]
    			i : i+1
    		else A[k] : R[j]
    			j : j+1
    
    MERGE-SORT(a, p, r)
    
    if p<r
    	then q : (p+r)/2
    		MERGE-SORT(A, p , q)
    		MERGE-SORT(A, q+1, r)
    		MERGE(a, p, q, r)
    

      

    BUBBLESORT(A)
    
    for i : 1 to length[A]
        do for j : length[A] downto i+1
            do if A[j] < A[j-1]
                then exchange A[j] and A[j-1]
    

    自己的插入排序:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define N 12
     4 
     5 int A[N] ={0,4,8,5,9,1,6,3};
     6 
     7 
     8 void insertion_sort(int A[]){
     9     int key,i,j;
    10     for(j=2; j<8; ++j){
    11         key = A[j];
    12         i = j-1;
    13         while(i>0 && A[i]>key){
    14             A[i+1] = A[i];
    15             i = i-1;
    16         }
    17         A[i+1] = key;
    18     }
    19 }
    20 
    21 int main(int argc, char const *argv[])
    22 {
    23     
    24     insertion_sort(A);
    25     for (int i = 0; i < 10; ++i)
    26     {
    27         printf("%d ", A[i]);
    28     }
    29     printf("
    ");
    30     return 0

    自己写的合并排序:

     1 #include <stdio.h>  
     2 #include <iostream>  
     3 using namespace std; 
     4  
     5 void Merge(int* A,int p,int q,int r) 
     6 { 
     7     int n1= q-p+1; 
     8     int n2= r-q; 
     9      
    10     int *L= new int[n1+1]; 
    11     int *R= new int[n2+1]; 
    12  
    13     int i=0; 
    14     int j=0; 
    15  
    16     for(i=0;i<n1;i++) 
    17     { 
    18         L[i]=A[p+i-1]; 
    19          
    20     } 
    21      
    22     for(j=0;j<n2;j++) 
    23     { 
    24         R[j]=A[q+j]; 
    25      
    26     } 
    27     L[n1] = 100;
    28     R[n2] = 100;
    29      
    30     i = 0; 
    31     j = 0; 
    32      
    33     for(int k = p-1;k < r; k++) 
    34     { 
    35         if(L[i]<=R[j]) 
    36         { 
    37             A[k] = L[i]; 
    38             i = i+1;    
    39         } 
    40         else 
    41         { 
    42             A[k] = R[j]; 
    43             j = j+1;     
    44         } 
    45     } 
    46 }  
    47  
    48 void Merge_Sort(int *A,int p,int r) 
    49 { 
    50     if(p<r) 
    51     { 
    52         int q=(p+r)/2; 
    53         Merge_Sort(A,p,q); 
    54         Merge_Sort(A,q+1,r); 
    55         Merge(A,p,q,r); 
    56     } 
    57 } 
    58  
    59 int A[15] = {11,12,13,14,15,1,2,3,4,5,6,7,8,9,10};  
    60  
    61 int main(int argc, char **argv) 
    62 { 
    63     Merge_Sort(A,1,15); 
    64      
    65     for(int i=0;i<15;i++) 
    66     { 
    67         cout<<A[i]<<"	"; 
    68     } 
    69     cout<<endl; 
    70     return 0; 
    71 } 
  • 相关阅读:
    黄金点游戏(结对项目)
    WORD COUNT
    企业级应用与互联网应用的区别
    问题
    软件工程期末学习总结
    自我介绍
    四则运算程序
    个人自评
    contenttype
    ubuntusaltstack
  • 原文地址:https://www.cnblogs.com/firstrate/p/3175294.html
Copyright © 2011-2022 走看看