1.bubble_sort
连续比较,若右边小于左边,则交换
void bubble_sort(int array[],int size)
{
int i,j;
for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(array[j]<array[i])
swap(array[i],array[j]);
}
2.selection_sort
每轮循环仅做一次交换,即每次比较仅记录序号,到最后再交换
void selection_sort(int array[],int size)
{
int temp;
bool flag=false;
for(int i=0;i<size;i++)
{ temp=i;
for(int j=i+1;j<size;j++)
{
flag=false;
if(array[j]<array[temp])
temp=j;
}
if(temp!=i)
{swap(array[temp],array[i]);
flag=true;
}
if(!flag)
break;
}
}
3.quick_sort
每次选定一个种子,令左边小于它,右边大于它,然后依次递归
void quick_sort(int array[],int first,int last)
{
int low,high,mid;
low=first;
high=last;
mid=array[(first+last)/2];
do
{
while(array[low]<mid)
low++;
while(array[high]>mid)
high--;
if(low<=high)
swap(array[low++],array[high--]);
}
while(low<=high);
if(first<high)
quick_sort(array,first,high);
if(low<last)
quick_sort(array,low,last);
}
4.binary_search
int binary_search(int array[],int value,int size)
{
int found=0;
int high=size,low=0,mid;
mid=(low+high)/2;
while((!found)&&(high>=low))
{
printf("Low %d Mid %d High %d/n",low,mid,high);
if(value==array[mid])
found=1;
else if(value<array[mid])
high=mid-1;
else
low=mid+1;
mid=(high+low)/2;
}
return (found)?mid:-1;
}
5.swap funtion
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}