vlambda博客
学习文章列表

c语言十大排序算法(一)


  1. 冒泡排序法

    #include<iostream>
    using namespace std;
    //冒泡排序法,比较相邻两个数的大小,小的放在前面,大的放在后面
    int main()
    {
       int arr[] = {122134517829116543};
       int n = sizeof(arr) / sizeof(int);

       for (int i = n; i >= 0; i--)
       {
           for (int j = 0; j < n - 1; j++)
           {
               if (arr[j] > arr[j + 1])
               {
                   int temp;
                   temp = arr[j];
                   arr[j] = arr[j + 1];
                   arr[j + 1] = temp;
               }
           }
       }
       return 0;
    }
  2. 选择排序法

    #include<iostream>
    using namespace std;
    //选择排序法,每次从未排序的序列中选出最小的元素,放在已排序数列中
    void swap(int *a,int *b)//交换两数的函数
    {
       int temp;
       temp = *a;
       *a = *b;
       *b = temp;
    }

    int main()
    {
       int arr[] = {11231135542445};
       int n = sizeof(arr)/sizeof(int);
       for(int i=0;i<n-1;i++)
       {
           int min =i;
           for(int j=i;j<n;j++)
           {
               if(arr[min]>arr[j])
                   min = j;
           }
           swap(arr+min,arr+i);   
       }
       return 0;
    }
  3. 插入排序法

    #include<iostream>
    using namespace std;
    //插入排序法,第一个元素被看作已经排好序的序列,选取下一个元素,从已排序的序列后面开始扫描,如果扫描的元素大于选取的元素,则将扫描元素后置一位,直至扫描元素小于选取元素,将选取元素放置在扫描序列末尾。
    int main()
    {
       int arr[] = {122136346632};
       int n = sizeof(arr)/sizeof(int);

       for(int i=1;i<n;i++)
       {
           if(arr[i]<arr[i-1])
           {
               int j =i-1;
               int x = arr[i];
               arr[i] = arr[i-1];
               while(x<arr[j])
               {
                   arr[j+1] = arr[j];
                   j--;
               }
               arr[j+1] = x;
            }     
       }
       return 0;
    }