面试中经常会使用排序,而冒泡是最常见的:
我正好整理一份出来,两个排序方法+介绍如下:
//选择排序
#include<stdio.h>
void sort(int* pArr,int len);//冒泡
void Print(int* pArr,int len);//回显数据
int main()
{
int array[10]={1,3,4,2,7,6,5,55,9,8};
sort(array,10);
Print(array,10);
return 0;
}
void Print(int* pArr,int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%d ",pArr[i]);
}
printf("
");
}
void sort(int* pArr,int len)
{
int i,j,t;
for(i=0;i<len-1;i++)//因为到最后哪一个数字是没有跟他比较的对象,所以这里可以-1
{
for(j=i+1;j<len;j++)
{
if(pArr[i] > pArr[j])
{
t = pArr[i];
pArr[i]=pArr[j];
pArr[j]=t;
}
}
}
}
root@aiyq195-virtual-machine:/home/aiyq195/桌面/sor# ./sor
1 2 3 4 5 6 7 8 9 55
//冒泡排序
#include<stdio.h>
void sort(int* pArr,int len);//冒泡
void Print(int* pArr,int len);//回显数据
int main()
{
int array[10]={1,3,4,2,7,6,5,55,9,8};
sort(array,10);
Print(array,10);
return 0;
}
void Print(int* pArr,int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%d ",pArr[i]);
}
printf("
");
}
/*
因为冒泡排序,是将一排数字,将他们从第一个开始与后面的排序,如果
它小于后面的,则与它后面的更换位置,这样,就造成了一个现象,就是一轮排序后,
这拍数字最后一位应该是最大的,所以,在第二轮的排序中,最后一个就不用再次参加;
所以,有了
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
中的j<len-i
而其中的-1,是因为下面的比较中,
是if(pArr[j] > pArr[j+1])
如果j=8,它就会跟底标为9的比较,所以,第9个没有比较的意义;故-1
成了如下
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
*/
void sort(int* pArr,int len)
{
int i,j,t;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
//因为冒泡排序,所以,当数组开始排序的时候,越往后的越大,也就是后面的不用再次参与到排序中了;
{
if(pArr[j] > pArr[j+1])
{
t = pArr[j];
pArr[j]=pArr[j+1];
pArr[j+1]=t;
}
}
}
}
root@aiyq195-virtual-machine:/home/aiyq195/桌面/sor# ./sor1
1 2 3 4 5 6 7 8 9 55
//倒序选择排序
#include<stdio.h>
void sort(int* pArr,int len);//冒泡
void Print(int* pArr,int len);//回显数据
int main()
{
int array[10]={1,3,4,2,7,6,5,55,9,8};
sort(array,10);
Print(array,10);
return 0;
}
void Print(int* pArr,int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%d ",pArr[i]);
}
printf("
");
}
void sort(int* pArr,int len)
{
int i,j,t;
for(i=0;i<len-1;i++)//因为到最后哪一个数字是没有跟他比较的对象,所以这里可以-1
{
for(j=i+1;j<len;j++)
{
if(pArr[i] < pArr[j])
{
t = pArr[i];
pArr[i]=pArr[j];
pArr[j]=t;
}
}
}
}
root@aiyq195-virtual-machine:/home/aiyq195/桌面/sor# vi sor2.c
root@aiyq195-virtual-machine:/home/aiyq195/桌面/sor# gcc sor2.c -o sor2
root@aiyq195-virtual-machine:/home/aiyq195/桌面/sor# ./sor2
55 9 8 7 6 5 4 3 2 1