標籤:

給定一個長度為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=12

138445951: 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& a;
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&::iterator i = a.begin(); i != a.end(); ++i)
{
cout&<&<*i&<&<" "; } return 0; }


func paiXu (numbers: [Int]) -&> [Int] {
return numbers.sorted(&<) }

用Swift寫了一個,見笑了,別打我。。。


很多種排序方法啊,快速排序,希爾排序等等,網上很多例子的


百度效率更高吧


知乎不是普遍反感伸手黨的嗎?各種編程語言黨正在逼近中,題主當心


推薦閱讀:

簡化深度學習實踐流程:新鮮出爐的TensorFlow項目模板來了
工作一個月的感受
買西瓜的高級玩法,用好你的智能手機
GacUI 動畫系統 (1)

TAG:編程 | C |