简单选择排序 时间限制: 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

http://wenku.baidu.com/link?url=zOokk6qUqjFIyDFq2l4FE043A5eMlVkCfmpm7DzHGWimA7N5Qq-y4rjQ4m2GWKLocsTHMFVJsNitgmAmeCR4JZXPnXUqabVQIeu5-OKQB3S

http://wenku.baidu.com/link?url=zOokk6qUqjFIyDFq2l4FE043A5eMlVkCfmpm7DzHGWimA7N5Qq-y4rjQ4m2GWKLocsTHMFVJsNitgmAmeCR4JZXPnXUqabVQIeu5-OKQB3S