HDU1425簡單排序題

2021-10-19 12:15:28 字數 3856 閱讀 4629

這道題就是資料有點大,所以後面的幾個程式是超時的,八種方法中通過了前面四種。

方法一(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...