選擇排序
選擇排序是一種直觀的排序算法.它的原理是每一次從待排序中選出最小或最大的一個元素,
存放在序列的起始位置,直到所有待排序的數據元素排完.選擇排序是不穩定的排序方法
(好比:[5,5,2],在第一次就將第一個5與3交換了,致使第一個5挪到第二個5後面)。
實現:
void SelectSort(type a[],int len)
{
type temp;
int nIndex = 0;
int i,j;
for(i=0;i<len-1;i++)
{
nIndex=i;
for(j=i+1;j<len;j++)
{
if(a[j]<a[nIndex])
{
nIndex = j;
}
}
if(nIndex != i)
{
temp = a[i];
a[i]= a[nIndex];
a[nIndex]=temp;
}
}
}
二元選擇排序
簡單的選擇排序,每趟循環只能肯定一個元素排序後的定位,咱們能夠考慮每趟循環肯定
兩個元素(當前趟的最大和最小記錄)的位置,從而減小排序所需的循環次數。改進後對n個
數據進行排序,最多隻需進行【n/2】趟排序便可
代碼實現:
void SelectSort(int r[],int n)
{
int i,j,min,max,tmp;
for(i=0;i<=n/2;i++)
{
min = i;
max = i;
for(j = i+1; j<=n-i; j++)
{
if(r[j] > r[max])
{
max = j;
continue;
}
if(r[j] < r[min])
{
min = j;
}
}
tmp = r[i];
r[i] = r[min];
r[min] = tmp;
tmp = r[n-i];
r[n-i] = r[max];
r[max] = tmp;
}
}
算法