冒泡排序:
比较相邻的两个数,把比较的冒上去,所以很简单的得到:
for(i=0;i<5;i++){
for(j=0; j<5-i;j++){
if(a[j]<a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
选择排序:
就是打擂台的方式,每一次找出最大的与末尾的交换,先把啊a[i]的值和位置存上,然后与a[j]比较,如果value大就赋值给临时变量,然后交换位置:
void selectsort(char *a,int n){
int i,j,value,index;
for(i=0;i<n-1;i++){
index = i;
value = a[i];
for(j=i+1;j<n;j++){
if(value>a[j])
{
index = j;
value = a[j];
}
a[index] = a[i];
a[i] = value;
}
}
}
快速排序:
看到别人的博客,讲的比较透彻,主要理解就是:挖坑填数+分治法!以第一个数为基准,挖坑,把第一个存起来,然后i++,j--将大于这个数的放在后半部分,小于的放在前半部分。
void quick_sort(int s[],int l,int r)
{
if(l < r)
{
int i = l,j = r,x = s[0];
while(i<j)
{
while(i < j && s[j] >= x)
j--;
if(i<j)
s[i++] = s[j];
while(i<j && s[i] < x )
i++;
if(i<j)
s[j--] = s[i];
}
s[i] = x;
quick_sort(s,l,i-1);
quick_sort(s,i+1,r);
}
}