排序方法分析

  1. 冒泡排序法:
    关键词:
  • 依次比较相邻两个元素的大小

  • 若按照从小到大的顺序,则:若前面的数比后面的数大,则两个数交换位置,然后继续相邻两个数比较

    伪代码:从小到大排列,长度为n
      for(int i=0;ia[i+1]){
                  temp=a[i+1];
                  a[i+1]=a[i];
                  a[i]=temp;
                      }
      验证代码
              #include 
              int temp;
              int main(void) {
              int BubbleSort(int *a);
              int arr1[]={23,45,13,75,24,78};
              BubbleSort(arr1);
              return 0;
              }
        
              int BubbleSort(int *a){
              for(int i=0;i<6-1;i++){
                     for(int j=0;j<6-i-1;j++){
                       if(a[j]>a[j+1]){
                       temp=a[j+1];
                       a[j+1]=a[j];
                       a[j]=temp;
                    }
                 }
      }
      for(int k=0;k<6;k++){
      printf("%d ",a[k]);//依次输出
      }
    }
    

输出: 13 23 24 45 75 78

  1. 选择排序法:
    关键词:
  • 第一次将数组中最小的数选出来,并放在第一位。

  • 同理,第二次就将数组中第二小的数选择出来,并放在第二位。
    *后面的以此类推......

      for(int i=0;i
  1. 插入算法
    关键词:
  • 将一个数插入到以及排好序的有序数组中,适用于少量数据的排序
  • 时间复杂度为O(n^2)
    *比较稳定
    *最好情况:2,3,5,6插入7(默认从后面比较起)
    *最坏情况:2,3,5,7插入1(默认后面比较起)
  1. 排序算法
    最差情况下可能是O(n^2)
    也就是当你要作为基准的那个值的是最小或者是最大的

随机快排O(n*logn),是最常用的快排

你可能感兴趣的:(排序方法分析)