排序

1.插入排序

 

[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. #include<iostream>  
  2. using namespace std;  
  3. int main ()  
  4. {  
  5.     int i,j,k=1,a,n,m,number[100];  
  6.     cout<<"please enter a number as n:\n";  
  7.     cin>>n;  
  8.     cout<<"please input n interge numbers :\n";  
  9.     for(m=1;m<=n;m++)  
  10.     {  
  11.         cin>>number[m];  
  12.     }  
  13.       
  14.     for(i=2;i<=n;i++)  
  15.     {  
  16.         a=number[i];  
  17.         j=i-1;  
  18.         while(j>0 && number[j]>a)  
  19.   
  20.         {  
  21.             number[j+1]=number[j];  
  22.             j=j-1;  
  23.         }  
  24.         number[j+1]=a;  
  25.     }  
  26.     cout<<"排序后的数组:";  
  27.     for(k=1;k<=n;k++)  
  28.     {  
  29.         cout<<number[k]<<" ";  
  30.           
  31.     }  
  32.     return 0;  
  33. }  

 

 

2.选择排序

 

[objc] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>  
  2. #include <math.h>  
  3. #define MAX 100  
  4.   
  5. void swap(int*a,int*b)  
  6. {  
  7.     int temp;  
  8.     temp=*a;  
  9.     *a=*b;  
  10.     *b=temp;  
  11. }  
  12.   
  13. void sort(int s[], int n)  
  14. {  
  15.     int i, j, min, temp;  
  16.     for (i = 0; i < n - 1; i++){  
  17.         min = i;  
  18.         for (j = i + 1; j < n; j++)  
  19.         if (s[j] < s[min])  
  20.             min = j;  
  21.         swap(&s[i], &s[min]);  
  22.     }  
  23. }  
  24.    
  25. void main(void)  
  26. {  
  27.     int i, n;  
  28.     int s[MAX];  
  29.     printf("请输入数组元素的个数n: ");  
  30.     scanf("%d", &n);  
  31.     printf("请输入待排序的数组: \n");  
  32.     for(i=0;i<n;i++)  
  33.     {  
  34.        scanf("%d",&s[i]);  
  35.     }  
  36.     if (n < 1 || n > MAX){  
  37.         printf("Error\n");  
  38.     }  
  39.     sort(s, n);  
  40.     printf("排序后的数组为:\n");  
  41.     for (i = 0; i < n; i++)      
  42.         printf("%d ", s[i]);  
  43.     printf("\n");  
  44. }  
  45.    
  46.    

 

 

3.快速排序

 

[cpp] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. #include<iostream>  
  2. #define MAX 100  
  3. using namespace std;  
  4.   
  5.   
  6. int Swap(int &a, int &b)  
  7. {      
  8.     int temp;  
  9.     temp = a;  
  10.     a = b;  
  11.     b = temp;  
  12.     return 0;  
  13. }  
  14.   
  15. //划分算法   
  16. int split(int A[],int low,int high )  
  17. {  
  18.     int i=low;  
  19.     int x=A[low];  
  20.     int j = high+1;  
  21.     while(1)  
  22.     {  
  23.         while(A[++i]<x && i<high);  
  24.           while(A[--j]>x);  
  25.           if(i>=j) break;  
  26.         Swap(A[i], A[j]);  
  27.     }  
  28.     A[low] = A[j];  
  29.     A[j] = x;  
  30.     return j;  
  31. }  
  32.   
  33. //快速排序算法   
  34. void quicksort(int A[],int low,int high)  
  35. {  
  36.     if ( low < high )  
  37.     {  
  38.         int w=split(A,low,high);  
  39.         quicksort(A,low,w-1);  
  40.         quicksort(A,w+1,high);  
  41.     }     
  42. }  
  43.   
  44. int main ()  
  45. {     
  46.     int i, n;  
  47.     int A[MAX];  
  48.     printf("请输入数组元素的个数n: ");  
  49.     scanf("%d", &n);  
  50.     printf("请输入待排序的数组: \n");  
  51.     for(i=0;i<n;i++)  
  52.     {  
  53.        scanf("%d",&A[i]);  
  54.     }    
  55.     quicksort(A,0,n-1);  
  56.     cout<<"排序后的序列为:"<<endl;  
  57.      for( int k = 0; k < n; k++ )  
  58.        cout << A[k] << "  ";  
  59.        cout << endl;  
  60.     return 0;  
  61. }  
posted @ 2017-01-10 16:29  阿奇blog  阅读(33)  评论(0)    收藏  举报