做网站需要有,开发一个网站大概多少钱,怎么打广告吸引客户,淘淘乐网站建设文章目录 作业标题作业内容2.解题思路3.具体代码 作业标题
冒泡排序
作业内容 实现一个对整形数组的冒泡排序 2.解题思路
先了解一下冒泡排序#xff1a;
两两相邻的元素进行比较#xff0c;如果前面元素大于后面元素就交换两个元素的位置#xff0c;最终的结果是最大的… 文章目录 作业标题作业内容2.解题思路3.具体代码 作业标题
冒泡排序
作业内容 实现一个对整形数组的冒泡排序 2.解题思路
先了解一下冒泡排序
两两相邻的元素进行比较如果前面元素大于后面元素就交换两个元素的位置最终的结果是最大的一个元素移动到了最后的位置。
如果有n个元素那么【冒泡操作】重复n-1次即可排序完成。
3.具体代码
void bubble_sort(int arr[], int sz) {//趟数int i 0;for (i 0; i sz - 1; i) {//一趟内部的两两比较int j 0;for (j 0; j sz - i - 1; j) {if (arr[j] arr[j 1]) {int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}}
}int main()
{int arr[] { 1, 3, 2, 8, 34, 4, 77, 85, 96, 1, 10 };int sz sizeof(arr) / sizeof(arr[0]);int i 0;printf(排序之前:);for (i 0; i sz; i){printf(%d , arr[i]);}printf(\n);bubble_sort(arr, sz);printf(\n排序之后:);for (i 0; i sz; i){printf(%d , arr[i]);}return 0;
}打印 代码讲解 先定义一个整型数组arr用来存放要排序的元素。 定义一个整型变量sz利用sizeof函数来求arr数组里元素的个数。 定义整形变量i打印排序之前: 进入for循环依次通过数组下标打印原数组元素。 换行 将数组首元素地址arr和数组元素个数sz作为实参传递给bubble_sort()函数 先定义整型变量i。 进入for循环这里的for循环是嵌套的当i0的时候把arr[0]和后面的其他元素依次比较。 如果arr[0]里面的元素比arr[1]大那么就互换两个元素。 换完之后如果arr[1]的元素比arr[2]大那么就互换两个元素。重复操作。 换完之后如果arr[1]的元素比arr[2]小那么就继续进入外层循环。 如果arr[0]里面的元素比arr[1]小那么就继续进入外层循环取出arr[1]和后面的元素比较重复上面的操作。 bubble_sort()函数执行完成后数组的元素就被排序成功了。 换行打印排序之后: 进入for循环依次通过数组下标打印冒泡排序后的数组元素。 优化如果某次冒泡结束后序列已经有序了后面剩余元素的冒泡可以省略 void BubbleSort(int array[], int size)
{// 外层循环控制冒泡排序的趟数// 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;}
}