#pragma once
#include
void printarray(int array, int size)
printf(」\n");
}void swap(int *a, int *b)
// 插入排序
// 時間複雜度:
// 1) 最好 o(n) 已經有序
// 2) 平均 o(n^2)
// 3) 最壞 o(n^2) 已經有序,是逆序
// 空間複雜度
// o(1)
// 穩定
void insertsort(int array, int size)
// j + 1 就是要插入的位置
array[j + 1] = key;
}
// 希爾排序
// 是插入排序的優化版本
// 在插入排序之前,盡可能的讓資料有序
// 分組插排
// 時間複雜度
// 1)最好 o(n)
// 2)平均 o(n^1.2) - o(n^1.3)
// 3)最差 o(n^2)
// 空間複雜度
// o(1)
// 不穩定(一旦分組,很難保證相同數分到乙個組裡)
// 可以設定 gap 的插入排序
void insertsortwithgap(int array, int size, int gap)
array[j + gap] = key;
}
void shellsort(int array, int size) }}
// 選擇排序
// 時間複雜度:
// 最好/平均/最壞 o(n^2)
// 空間複雜度 o(1)
// 不穩定 ,無法保證 5a 一定在 5b 前
void selectsort(int array, int size)
}
swap(array + max, array + size - 1 - i);
}
// 堆排序(建大堆)
// 時間複雜度:
// 最好|平均|最壞 o(n*log(n))
// 空間複雜度 o(1)
// 不穩定 (向下調整過程中,無法保證相等數前後關係)
// 向下調整
// 時間複雜度 o(log(n))
void adjustdown(int array, int size, int root)
int m = i;
if (j < size && array[j] > array[i])
if (array[m] > array[root]) }
// 建堆
// o(n) or o(n * log(n))
void createheap(int array, int size)
}// 堆排序
void heapsort(int array, int size)
// 時間複雜度
// 最好 o(n) 已經有序
// 最壞|平均 o(n^2)
// 空間複雜度 o(1)
// 穩定
void bubblesort(int array, int size)
}if (sorted == 1) }}
// 快速排序
int parition_1(int array, int left, int right)
// 一定是左邊卡住了
// 再走右邊
while (begin < end && array[end] >= array[right])
// 一定是右邊也卡住了
swap(array + begin, array + end);
}// 區間被分成 小,大,基準
swap(array + begin, array + right);
// 返回當前基準值所在位置
return begin;// 要排序的區間是 array[left, right]
void __quicksort(int array, int left, int right)
if (left > right)
int div; // 比基準值小的放基準值左邊,大的放右邊後,基準值所在的下標
div = parition_1(array, left, right); // 遍歷 array[left, right],把小的放左,大的放右
__quicksort(array, left, div - 1); // 分治解決左邊的小區間
__quicksort(array, div + 1, right); // 分治解決右邊的小區間
void quicksort(int array, int size)
void test() ;
int size = sizeof(array) / sizeof(int);
printarray(array, size);
quicksort(array, size);
printarray(array, size);
int main() 資料庫排序
一 對資料庫所開啟的記錄集排序,本身並沒有排序 datacontrolsequence為data控制項的名稱 1.datacontrolsequence.recordsource select from controlsequence ny 1 order by sequence 對記錄集進行排序 ...
資料庫排序
use mydb 排序 select from category order by ids asc order排序的意思 asc 公升序 select from category order by ids desc desc 降序 select from category order by pare...
資料庫 排序檢索資料
本章將講授如何使用select語句的order by子句,根據需要排序檢索出的資料。正如前一章所述,下面的sql語句返回某個資料庫表的單個列。單請看其輸出,並沒有特定的排序。子句 sql語句由子句構成,有些子句是必需的,而有的是可選的。乙個子句通常由乙個關鍵字和所提供的資料組成。子句的例子有sele...