好像编程编得经典首先要学会排序
在编程中我们最长接触到的就是排序了,各种逻辑和算法、不过循环方式是最让人晕眩的,今天,我们就一起来看看几个程序员最常接触到的排序写法。
1.基数排序
bool radixsort(int *array,int n)
{ L TENL[10]; //其中TENL[m].number中存储,数据的第i位为m的数据
int k;
for(int i=0;i<10;i++)
TENL[i].n=0;
for(i=1;i<=5;i++) //这里假设 数据都 小于100000,对数据进行五次分配
{ for(int j=0;j<n;j++) //对数据进行分配
{ k=getnum(array[j],i);
TENL[k].number[TENL[k].n]=array[j];
TENL[k].n++;}
j=0;
for(k=0;k<10;k++) //将此次分配后的数据,按顺序重新置入array中
{for(int m=0;m<TENL[k].n;m++)
array[j++]=TENL[k].number[m];
TENL[k].n=0; } }
return true;}
int getnum(int num,int i) //从个位起,获得num的第i为数据
{int temp=1;
for(int j=0;j<i;j++)
temp=temp*10;
return (num%temp-num%(temp/10))/(temp/10);}
2.简单的选择排序。更多精彩内容http://htmlkaifad.blog.51cto.com/
bool selectionsort(int *array,int n) //array为存储数据的数组,n为数组元素个数
{int k,temp; //k用来存储,临时最小数据的位置
for(int i=0;i<n-1;i++)
{k=i;
for(int j=i+1;j<n;j++)//从第i个数开始选择最小数位置,存于k中
if(array[j]<array[k])
k=j;
if(k!=i) //若最小数,不为array[i],则array[i]与array[k]进行交换
{ temp=array[i];
array[i]=array[k];
array[k]=temp; } }
return true; }
3.插入排序
bool insertionsort(int *array,int n)
{int temp; //用来存储,插入的数据
for(int i=1;i<n;i++)
{temp=array[i]; //用temp记录array[i]
for(int j=i-1;j>=0;j--) //逐个向前寻找插入点
{ if(temp>array[j]) //找到,跳出循环
break;
else //没找到,将前一个数据后移
array[j+1]=array[j];}
array[j+1]=temp;}
return true;}
4.冒泡排序
bool bubblesort(int *array,int n)
{int flag=1, //用来标记是否发生交换
temp;
for(int i=0;i<n-1;i++)
{ for(int j=i+1;j<n;j++)
{ if(array[j]<array[j-1])
{temp=array[i];
array[i]=array[j];
array[j]=temp;
flag=0; }
}
if(flag) //如果flag为真,及没发生交换,直接跳出循环
break;
else
flag=1;
}
return true; }
健康知识肝内胆管结石治疗
浙公网安备 33010602011771号