您的位置:首页 > 其它

几种简单的排序算法实现

2017-06-06 22:47 330 查看
几种简单的排序算法实现
冒泡排序

void bubbleSort(int *pData,int count)
{
for (int i = 1;i<count;i++)
{
for (int j = count-1;j>=i;j--)
{
if (pData[j]<pData[j-1])
{
int iTmp = pData[j];
pData[j] = pData[j-1];
pData[j-1] = iTmp;
}
}
}
}
选择排序

void selectSort(int* list,int count)
{
int min,i,j;
for (i = 0;i <count;i++)
{
min = i;
for (j=i+1;j<count;j++)
{
if(list[i]>list[j])
min = j;
}
if(min != i)
swap(list[i],list[min]);
}
}
折半插入排序算法
void binary_insertion_sort(int array[], int n)
{
int i, j, temp, m, low, high;
for (i = 1; i < n; i++)
{
temp = array[i];
low = 0; high = i-1;
//5,36,24,10,6,12
while (low <= high)
{
m = (low +high) / 2;
if(array[m] > temp)
high = m-1;
else
low = m+1;
}
for (j = i-1; j>=high+1; j--)
array[j+1] = array[j];
array[j+1] = temp;
cout<<endl;
}
}
插入排序
void InsertSort(int array[],int n)
{
for(int i=1;i<n;i++)
{
for(int j=i;j>0;j--)
{
if(array[j]>array[j-1])
swap(array[j],array[j-1]);
else
break;
}
}
}
快速排序

void quick_sort(int s[], int left, int right)
{
if(left<right)
return;
int i = left,j=right,temp = s[left],t;
while(i!=j)
{
while(i<j && temp <= s[j])
j--;
while(i<j && temp >= s[i])
i--;
if (i<j)
{
t = s[i];
s[i]=s[j];
s[j]=t;
}
}
s[left] = s[i];
s[i]=temp;
quick_sort(s,left,i-1);
quick_sort(s,i+1,right);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法