程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-簡單選擇排序 時間限制: 40 Sec 內存限制: 128 MB

c語言-簡單選擇排序 時間限制: 40 Sec 內存限制: 128 MB

編輯:編程綜合問答
簡單選擇排序 時間限制: 40 Sec 內存限制: 128 MB

題目描述
編一程序用簡單選擇排序方法對n個整數排序(從大到小)。
對n個數進行降序排列,簡單選擇排序的算法思想如下:
1)首先通過n-1次比較,從n個元素中找出值最大的元素,將它與第一個元素交換。(第一趟排序)。
2)再通過n-2次比較,從剩余的n-1個元素中找出值次大的元素,將它與第二個元素交換。(第二趟排序)。
3)重復上述操作,共進行n-1趟排序後,排序結束。
輸入
先輸入整數個數n(n<=100000)
然後輸入n個整數
輸出
輸出排序後的n個整數,整數之間由1個空格隔開。
樣例輸入
102 7 12 23 23 34 45 56 87 98
樣例輸出
98 87 56 45 34 23 23 12 7 2
提示

本題由實驗指導書實驗9第3題改編而成。

注意數組元素長度可達100000,也需盡量優化算法以避免超時。

難度系數為6。

我的代碼是這樣的
#include"stdio.h"

void sort(int array[],int n) //排序函數
{
int i,j,temp;
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
{
if(array[i]<array[j])
{
//交換
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}

int main() //主函數
{
int N;
scanf("%d",&N);
int array[N],i;
for(i=0; i<N; i++)
{
scanf("%d",&array[i]);
}
//調用排序函數
sort(array,N);
//輸出排序後的結果
for(i=0; i<N; i++)
{
printf("%d ",array[i]);
}
}
能不能告訴我怎麼優化?超時了

最佳回答:


你的時間復雜都為O(n2) 你試試qsort

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved