給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200。怎麼寫出程序?
用c++寫出
#include&
//編譯時要加參數-fopenmp (GCC)、 /openmp (VC)、-openMP(Linux ICC)或/Qopenmp(windows ICC)
#define TIME_STEP_MILISEC 100
//出錯率與排序時間成負相關
#if defined _MSC_VER
#include&
#define sleep(time_msec) Sleep(time_msec)
#elif defined __GNUC__
#include&
#define sleep(time_msec) usleep((time_msec)*1000)
#else
void sleep(int time_msec)
{
double start = omp_get_wtime();
double time_sec = time_msec * 0.001;
while((omp_get_wtime() - start) &< time_sec);
}
#endif
void jiuShiRenXingSort (int a[], int n)
{
int *b = new int[n];
int i = 0;
int value;
omp_set_num_threads(n);
#pragma omp parallel shared(a,b,i) private(value)
{
value = a[omp_get_thread_num()];
sleep(value*TIME_STEP_MILISEC);
#pragma omp critical
{
b[i++] = value;
}
}
for(i = 0; i &< n; ++i)
a[i] = b[i];
delete []b;
}
因為我比 @純純 任性一點,所以我的排序有可能出意外。。一言不合就沒排好(逃
#include &
#include &
#include &
using namespace std;
bool isSorted(int A[], int n); //這個函數的任務是看看排好了沒
void niKaiXinJiuHaoSort(int A[], int n); //這個函數的任務是把n個數扔天上交換一下順序
int main() {
srand(time(NULL));
int n;
cin &>&> n;
int *A = new int[n];
//輸入n個整數
for (int i = 0; i &< n; i++)
cin &>&> A[i];
while (!isSorted(A, n)) //如果沒排好序
niKaiXinJiuHaoSort(A, n); //就把他們全部扔到天上再撿下來
//排好了就輸出
for (int i = 0; i &< n; i++)
cout &<&< A[i] &<&< endl;
delete[] A;
}
bool isSorted(int A[], int n) {
for (int i = 0; i &< n - 1; i++) {
if (A[i] &> A[i + 1])
return false;
}
return true;
}
void niKaiXinJiuHaoSort(int A[], int n) {
bool *book = new bool[n];
int *B = new int[n];
int r;
for (int i = 0; i &< n; i++) {
B[i] = A[i];
book[i] = false;
}
for (int i = 0; i &< n; i++) {
//從天上隨便抓個數
//如果這個數用過了,就扔回天上
while (book[r = (int)rand() % n] == true)
;
//沒用過就放到這個位置上
A[i] = B[r];
book[r] = true;
}
delete[] book;
delete[] B;
}
跑了 n=10
2883868: 48 219 122 252 165 43 253 99 109 45
2883869: 165 43 253 252 48 109 122 99 219 45
2883870: 253 99 165 122 219 252 43 109 45 48
2883871: 219 165 43 252 109 122 99 45 253 48
2883872: 48 99 45 122 252 219 165 109 253 43
2883873: 165 43 109 45 252 219 99 253 48 122
2883874: 122 219 253 165 45 48 252 99 43 109
2883875: 122 45 109 48 219 253 252 99 43 165
2883876: 45 219 43 252 48 122 253 109 165 99
2883877: 43 122 165 45 48 252 219 99 109 253
2883878: 122 43 45 48 252 219 109 99 253 165
2883879: 43 253 109 219 252 48 99 165 122 45
2883880: 43 45 48 99 109 122 165 219 252 253
43
45
48
99
109
122
165
219
252
253
我試試12,順便去洗澡【n=12138445951: 52 261 299 6 23 52 165 95 149 16 180 41
138445952: 95 16 180 299 149 165 6 23 52 52 261 41
138445953: 149 95 6 16 165 52 261 23 52 41 299 180
138445954: 52 41 23 52 261 180 95 16 299 6 165 149
138445955: 261 6 299 95 180 165 52 149 52 23 41 16
138445956: 180 41 149 16 52 23 95 52 165 299 261 6
138445957: 52 23 6 149 180 52 95 165 299 261 41 16
138445958: 16 149 95 52 23 180 52 6 41 165 299 261
138445959: 95 149 52 261 299 6 16 180 23 41 52 165
138445960: 299 180 23 52 261 149 41 165 95 16 6 52
138445961: 52 23 52 41 299 180 16 95 261 165 149 6
138445962: 41 6 16 261 149 165 52 299 180 52 23 95
138445963: 165 149 95 299 180 41 6 261 16 52 23 52
138445964: 52 23 261 149 95 299 41 180 6 52 165 16
138445965: 261 6 16 180 299 23 165 41 52 52 95 149
138445966: 6 299 16 165 41 52 52 261 180 23 95 149
138445967: 52 52 95 41 180 165 261 23 299 149 6 16
138445968: 6 261 180 52 52 16 299 165 95 23 149 41
138445969: 149 16 180 52 52 95 23 6 41 261 299 165
138445970: 299 16 52 261 165 149 23 180 6 41 52 95
138445971: 299 6 261 149 52 95 52 16 23 180 41 165
138445972: 23 6 52 41 95 299 16 165 149 180 52 261
138445973: 299 180 23 16 41 149 95 52 52 261 165 6
138445974: 95 261 299 52 165 6 180 149 16 23 41 52
138445975: 180 165 52 6 52 16 41 23 261 95 299 149
138445976: 52 23 16 95 41 149 6 299 261 165 180 52
^C
放棄了。。。
這不是基本的排序么?
是說不準用std::sort()嗎?
#include &
#include &
#include &
#include &
using namespace std;
vector&
int n;
int main()
{
#ifndef ONLINEJUDGE
freopen("temp.in","r",stdin);
#endif
cin&>&>n;
for (int i = 0,temp; i &< n; ++i)
{
cin&>&>temp;
a.push_back(temp);
}
sort(a.begin(),a.end());
for (std::vector&
{
cout&<&<*i&<&<" ";
}
return 0;
}
func paiXu (numbers: [Int]) -&> [Int] {
return numbers.sorted(&<)
}
用Swift寫了一個,見笑了,別打我。。。
很多種排序方法啊,快速排序,希爾排序等等,網上很多例子的
百度效率更高吧
知乎不是普遍反感伸手黨的嗎?各種編程語言黨正在逼近中,題主當心
推薦閱讀:
※簡化深度學習實踐流程:新鮮出爐的TensorFlow項目模板來了
※工作一個月的感受
※買西瓜的高級玩法,用好你的智能手機
※GacUI 動畫系統 (1)