<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="th">
	<id>http://158.108.32.49/wiki/index.php?action=history&amp;feed=atom&amp;title=O%28n%29_Selection</id>
	<title>O(n) Selection - ประวัติรุ่นแก้ไข</title>
	<link rel="self" type="application/atom+xml" href="http://158.108.32.49/wiki/index.php?action=history&amp;feed=atom&amp;title=O%28n%29_Selection"/>
	<link rel="alternate" type="text/html" href="http://158.108.32.49/wiki/index.php?title=O(n)_Selection&amp;action=history"/>
	<updated>2026-05-06T20:55:36Z</updated>
	<subtitle>ประวัติรุ่นแก้ไขของหน้านี้ในวิกิ</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>http://158.108.32.49/wiki/index.php?title=O(n)_Selection&amp;diff=5318&amp;oldid=prev</id>
		<title>202.29.77.2: สร้างหน้าใหม่: &lt;pre&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;  #define min(a,b) (((a)&lt;(b))?(a):(b))  void swap(int &amp;x, int &amp;y) { 	int temp = x; 	x = y; 	y = temp; }  void sel...</title>
		<link rel="alternate" type="text/html" href="http://158.108.32.49/wiki/index.php?title=O(n)_Selection&amp;diff=5318&amp;oldid=prev"/>
		<updated>2008-10-18T08:07:16Z</updated>

		<summary type="html">&lt;p&gt;สร้างหน้าใหม่: &amp;lt;pre&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt;  #define min(a,b) (((a)&amp;lt;(b))?(a):(b))  void swap(int &amp;amp;x, int &amp;amp;y) { 	int temp = x; 	x = y; 	y = temp; }  void sel...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;หน้าใหม่&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define min(a,b) (((a)&amp;lt;(b))?(a):(b))&lt;br /&gt;
&lt;br /&gt;
void swap(int &amp;amp;x, int &amp;amp;y)&lt;br /&gt;
{&lt;br /&gt;
	int temp = x;&lt;br /&gt;
	x = y;&lt;br /&gt;
	y = temp;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void selection_sort(int *x, int n)&lt;br /&gt;
{&lt;br /&gt;
	for(int k=0;k&amp;lt;n-1;k++)&lt;br /&gt;
	{&lt;br /&gt;
		int min_position = k;&lt;br /&gt;
		for(int i=k;i&amp;lt;n;i++)&lt;br /&gt;
			if (x[min_position] &amp;gt; x[i])&lt;br /&gt;
				min_position = i;&lt;br /&gt;
		swap(x[min_position], x[k]);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int select(int *x, int n, int k);&lt;br /&gt;
&lt;br /&gt;
int choose_pivot(int *x, int n)&lt;br /&gt;
{&lt;br /&gt;
	for(int start=0;start&amp;lt;n;start+=5)&lt;br /&gt;
		selection_sort(x+start, min(5, n-start));&lt;br /&gt;
	for(int i=0;i&amp;lt;n/5;i++)&lt;br /&gt;
	{&lt;br /&gt;
		int start = i*5;&lt;br /&gt;
		int end = min(n-1, start+5-1);&lt;br /&gt;
		int mid = (start+end)/2;&lt;br /&gt;
		swap(x[i], x[mid]);&lt;br /&gt;
	}&lt;br /&gt;
	return select(x, n/5, n/10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int partition(int *x, int n)&lt;br /&gt;
{&lt;br /&gt;
	int pivot_position = choose_pivot(x, n);&lt;br /&gt;
	swap(x[pivot_position], x[0]);&lt;br /&gt;
	int last = 1;&lt;br /&gt;
	for(int i=1;i&amp;lt;n;i++)&lt;br /&gt;
		if (x[0] &amp;gt;= x[i])&lt;br /&gt;
		{&lt;br /&gt;
			swap(x[last], x[i]);&lt;br /&gt;
			last++;&lt;br /&gt;
		}&lt;br /&gt;
	swap(x[last-1], x[0]);&lt;br /&gt;
	return last-1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int select(int *x, int n, int k)&lt;br /&gt;
{&lt;br /&gt;
	if (n &amp;lt;= 1)&lt;br /&gt;
		return 0;&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		int mid = partition(x, n);&lt;br /&gt;
		if (k == mid)&lt;br /&gt;
			return mid;&lt;br /&gt;
		else if (k &amp;lt; mid)&lt;br /&gt;
			return select(x, mid, k);&lt;br /&gt;
		else&lt;br /&gt;
			return select(x+mid+1, n-mid-1, k-mid-1);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int a[10000];&lt;br /&gt;
&lt;br /&gt;
#define FOR(__i, __times) for(int __i=0;__i&amp;lt;__times;__i++)&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	FOR(i, 10000)&lt;br /&gt;
		a[i] = rand() % 32767;&lt;br /&gt;
	int answer = select(a, 10000, 5000);&lt;br /&gt;
	printf(&amp;quot;%d\n&amp;quot;, answer);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>202.29.77.2</name></author>
		
	</entry>
</feed>