数据结构常用查询算法

/**

交互两个数据

*/

inline void swap(int *a,int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}



/**
冒泡排序
*/
void bubbleSort(int len,int table[]) {
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len -1- i; j++) {
            if (table[j] > table[j + 1]) {
               swap(&table[j],&table[j+1]);
           }
        }
     }
}

/**
选择排序
*/
void selectSort(int len, int table[]) {
        for (int i = 0; i < len; i++) {
            int k = i;
           for (int j = i + 1; j < len; j++) {
               if (table[j] < table[k]) {
                 k = j;
              }
          }
          if (k != i) {
           swap(&table[i], &table[k]);
         }
      }
}


/*
插入排序
*/
void insertSort(int len, int table[]) {
   for (int i = 1; i < len; i++) {
       int j = i - 1;
       int temp = table[i];
       while (j >= 0 && table[j] > temp) {
           table[j + 1] = table[j];
           j--;
        }
      table[j + 1] = temp;
   }
}






/*
快速排序
*/
void quickSort(int left,int right, int table[]) {
    if (left < right) {
       int key = table[left];
       int l = left, r = right;
      while (l < r) {
           while (l<r && table[r]>key) {
               r--;
           }
          swap(&table[l], &table[r]);
          while (l<r && table[l] < key) {
              l++;
           }
         swap(&table[l], &table[r]);
}
   quickSort(left, l - 1, table);
   quickSort(l+1, right, table);
}



你可能感兴趣的:(数据结构,算法,排序)