C语⾔——实现对⼀个整型数组的冒泡排序
/*
思路:
遍历数组,对数组中相邻的两个元素进⾏⽐较,如果需要升序,前⼀个数据⼤于后⼀个数据时,交换两个位置上的数据,直到所有的数据⽐较完,此时,最⼤的数据已经放在数组的末尾。
除最⼤数据已经排好序外,其余数据还是⽆需,对剩余数据采⽤与上述类似的⽅式进⾏处理即可
*/
void BubbleSort(int array[],int size)
{
// 外层循环控制冒泡排序的趟数
// size-1表⽰:最后⼀趟区间中只剩余1个元素,该趟冒泡可以省略
for(int i =0; i < size-1;++i)
{
// 具体冒泡的⽅式:⽤相邻的两个元素进⾏⽐较,前⼀个⼤于后⼀个元素时,交换着两个数据,依次直到数组的末尾
for(int j =1; j < size-i;++j)
{
if(array[j-1]> array[j])
{
int temp = array[j-1];
array[j-1]= array[j];
array[j]= temp;
}
}
}
}
/*
优化:如果某次冒泡结束后,序列已经有序了,后⾯剩余元素的冒泡可以省略
*/
void BubbleSort(int array[],int size)
{
c语言的冒泡排序算法// 外层循环控制冒泡排序的趟数
// size-1表⽰:最后⼀趟区间中只剩余1个元素,该趟冒泡可以省略
for(int i =0; i < size-1;++i)
{
int isChange =0;
// 具体冒泡的⽅式:⽤相邻的两个元素进⾏⽐较,前⼀个⼤于后⼀个元素时,交换着两个数据,依次直到数组的末尾
for(int j =1; j < size-i;++j)
{
if(array[j-1]> array[j])
{
int temp = array[j-1];
array[j-1]= array[j];
array[j]= temp;
isChange =1;// 如果本次冒泡进⾏数据交换了,说明本次还是⽆序的,就将isChange设置为1
}
}
// 如果本次冒泡中,元素没有交换,则本次开始冒泡时,数据已经有序了,后⾯的冒泡可以不⽤进⾏了
if(!isChange)
return;
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。