C# DataTable 和List之間相互轉換的方法(轉)
阿新 • • 發佈:2021-11-08
一名電腦科學與技術的女大學生~#include <bits/stdc++.h> using namespace std; const int N = 100005; int a[N]; //快速排序 void quickSort(int q[], int l, int r){ if(l >= r){ //如果相等應該指的是陣列只有一個元素, //而大於的話暫時我也想不明白 return; } int index = q[(l + r) >> 1]; //這個值取誰都行,但是要注意邊界問題 // printf("index = %d\n", index); int i = l - 1, j = r + 1; //同時走兩個迴圈,先往後放一個位置,後續的操作都先做移動操作 // printf("l = %d\n", l); // printf("r = %d\n", r); while(i < j){ //只要i指標在j指標的左邊,兩個指標就都要繼續走 //i指標,先移動,再判斷, //當i指標指向的位置的值大於或等於index的值時,就不迴圈了 //此時i指標指在這個大於或等於index的值的位置 do{ i++; }while(q[i] < index); //j指標同理 do{ j--; }while(q[j] > index); //他們倆都停下的時候 //如果i指標在j指標的左邊,就交換 //如果i指標不在j指標的左邊的話,if進不去,下一次迴圈也進不去 if(i < j){ // printf("q[%d] = %d\n", i, q[i]); // printf("q[%d] = %d\n", j, q[j]); q[i] = q[i] ^ q[j]; q[j] = q[i] ^ q[j]; q[i] = q[i] ^ q[j]; //swap(q[i], q[j]); } } /* for(int i = l; i <= r; i++){ if(i == r){ printf("%d\n", a[i]); }else { printf("%d ", a[i]); } } */ //當i指標不在j指標的左邊的話,就證明這個l-r都排好了, //然後遞迴的再分兩個區間,直到排序完畢 quickSort(q, l, j); quickSort(q, j + 1, r); } int main(){ int n; //需要排序的個數 scanf("%d", &n); for(int i = 0; i < n; i++){ scanf("%d", &a[i]); } quickSort(a, 0, n - 1); for(int i = 0; i < n; i++){ if(i == n - 1){ printf("%d", a[i]); }else { printf("%d ", a[i]); } } return 0; }