NYOJ4 之ASCII碼排序和c++快速排序
阿新 • • 發佈:2018-12-24
#include <iostream> #include <vector> #include <string.h> using namespace std; /** c++版本 快速排序 */ void quickSort(char strDate[], int left, int right) { char middle, tempDate; int i, j; i = left; j = right; middle = strDate[(i + j) / 2]; do { while (strDate[i]<middle && i < right) i++; // 找出左邊比中間值大的數 while (strDate[j]>middle && j > left) j--; // 找出右邊比中間值小的數 if (i <= j) { // 將左邊大的數和右邊小的數進行替換 tempDate = strDate[i]; strDate[i] = strDate[j]; strDate[j] = tempDate; i++; j--; } } while (i <= j); // 當兩者交錯時停止 if (i < right) { quickSort(strDate, i, right);// 從 } if (j > left) { quickSort(strDate, left, j); } } int main(int argc, char* argv[] ) { int a; char str[1024]; cin>>a; while (a--) { cin>>str; int len=strlen(str); quickSort(str,0,len-1); unsigned int i=0; for (;i<len;i++) { cout<<str[i]<<" "; } cout<<endl; } return 0; }
http://acm.nyist.net/JudgeOnline/problem.php?pid=4