主函数
int main(int argc, const char *argv[])
{
int arr[10] = {5,8,7,4,6,3,2,1,9,4};
pop_sort(arr,10);
for (int i=0;i<10;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
}
被调函数-冒泡排序
void pop_sort(int *arr, int n)
{
int i,j; //循环变量
int t; //交换变量
for(i=1; i<n; i++) //外层循环控制趟数
{
int flag = 0; //排序开始之前设立一个旗帜
for(j=0; j<n-i; j++) //控制元素下标、以及比较次数
{
if(arr[j] > arr[j+1]) //大升小降 if(*(arr+j) > *(arr+j+1))
{
//交换三部曲
t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t;
flag = 1; //说明当前趟中进行了交换
}
}
if(flag == 0)
{
break; //说明当前趟没有数据进行交换,也反应了数列已经有序,后面就不需要再进行排了
}
}
}
测试
root@VM-12-9-ubuntu:paixu# a
1 2 3 4 4 5 6 7 8 9