這道題就是資料有點大,所以後面的幾個程式是超時的,八種方法中通過了前面四種。
方法一(accept)
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
intcmp
(const
void
*a,const
void
*b)int
main()
qsort
(a+1
,n,sizeof
(int
),cmp)
;for
(int i=
1;i) cout<<}return0;
}方法二:(accept) -快排
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
intpation
(int left,
int right,
int pa)
while
(temp>=pa[i]
&&i(i} pa[i]
=temp;
return i;
}void
quicksort
(int left,
int right,
int pa)
void
quicksort
(int n,
int pa)
intmain()
quicksort
(n,a)
;for
(int i=n-
1;i>n-m;i--
) cout<<}return0;
}方法三:(accept)
-堆排序
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
void
prodown
(int pa,
int s,
int size)
if(temp>=pa[c]
)break
;else
} pa[p]
=temp;
}void
buildheap
(int pa,
int size)
}void
heapsort
(int pa,
int n)
}int
main()
heapsort
(a,n)
;for
(int i=n-
1;i>n-m;i--
) cout<<}return0;
}方法四:(accept)
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
intmain()
sort
(a+1
,a+n+1)
;for
(int i=n;i>n-m+
1;i--
) cout<<}return0;
}方法五:(直接插入排序-超時)
#include
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
int n,m;
int a[maxx]
;int
main()
int temp;
for(
int i=
1;i) a[j]
=temp;
}for
(int i=n-
1;i>n-m;i--
) cout<<}return0;
} 方法六:(折半插入排序 -超時)
#include
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
int n,m;
int a[maxx]
;void
midsort
(int pa,
int n)
else
}for
(int j=i-
1;j>=left;j--
) a[left]
=temp;}}
intmain()
midsort
(a,n)
;for
(int i=n-
1;i>n-m;i--
) cout<<}return0;
}方法七:(希爾排序-超時)
#include
#include
#include
#include
using
namespace std;
const
int maxx=
1e6+10;
int a[maxx]
;int n,m;
template
<
class
t>
void
shellsort
(t *pa,
int n)
pa[k]
=temp;}}
gap/=2
;}}int
main()
shellsort
(a,n)
;for
(int i=n-
1;i>n-m;i--
) cout<<}return0;
}
方法八(雜湊-超時)
#include
#include
#include
using
namespace std;
const
int inf =
500050
;int a[inf]
;int hashs[
2*inf]
;int n, m;
intmain()
for(
int i =
2* inf-
1; m >
0; i--
)else
m--;}
}}return0;
}
排序 簡單排序
氣泡排序 函式名 bubble sort 功能 實現公升序排序 引數 帶排序的陣列,陣列的長度 返回值 為空 描述 時間複雜度為o n 2 輔助空間為o 1 有一種變形的氣泡排序 雞尾酒排序,它是雙向的氣泡排序,時間複雜度也為o n 2 void bubble sort int bubble,int...
排序 簡單排序
一 氣泡排序 源 void bubble sort int array,int size array if flag 0 break 二 插入排序 原理 從第二個元素開始向前比較判斷,如果比前乙個元素小,則前乙個元素往後移動一位,直到第乙個元素或者前面條件不成立,將該元素插入當前位置。源 void ...
poj1002 簡單排序題
從午後一點呼呼睡到三點,昏昏沉沉的,感覺學不了平衡樹,於是找了道水題做做,不過這題雖然水但是很麻煩 渾渾噩噩的打 調錯誤 會用sort函式就可以了,沒什麼特別的吧 include include includeusing namespace std int pho 100005 ans 100005...