歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

排序算法總結

1 冒泡排序:

void BubbleeSort(int*p,int len,SORT_TYPE type = SORT_ASC)
 {
 
  //冒泡方式二:當某一次遍歷沒有發生任務數據交互時,說明已經排序好了
  bool flag = true;
  int k = len;
  while (flag)
  {
   flag = false;
   for(int j=0 ; j<k-1 ; j++)
   {
    if (p[j] > p[j+1])
    {
     swap(p+j,p+j+1);
     flag = true;
    }
   }
 }

2、快速排序:

 void QuickSort(int*a, int nLeft, int nRight)
 {
  if(nLeft > nRight) return;

  int temp = a[nLeft];
  int i = nLeft;
  int j = nRight;

  while (i < j)
  {
   //首先從右邊找到一個比temp小的數
   while(a[j]>=temp && j>i)
    j--;
   //從左邊邊找到一個比temp大的數
   while(a[i]<=temp && j>i)
    i++;
   //交換找到的兩個數據
   //交換兩個數在數組中的位置               
   swap(a+i,a+j);
  }
  //print(a,10);
  //最終將基准數歸位 
  swap(a+nLeft,a+i);
  QuickSort(a,nLeft,i-1);
  QuickSort(a,i+1,nRight);
 }

3、插入排序

          void InsertSort(int*a, int nLeft, int nRight) {
  for(int i=1 ; i< len ; i++)
  {
   if(a[i] < a[i-1])
   {
     int j = i-1;
    int temp = a[i];

    while(temp < a[j])
    {
     a[j+1] = a[j];
     j--;
    }
    a[j+1] = temp;
   }
   //print(a,len);
  }
 }

4、選擇排序

 void SelectSort(int*a,int len,SORT_TYPE type = SORT_ASC)
 {
  for(int i=0; i<len;i++)
  {
   int temp = a[i];
   int index = i;
   for(int j=i+1; j <len;j++)
   {
    if(a[j] < a[index])
    {
     index = j;
    }
   }
   swap(a+i,a+index);
  }
  //print(a,len);
 }

Copyright © Linux教程網 All Rights Reserved