请识别我编写的以下C语言排序算法的名称
排序算法识别结果
这段代码实现的是优化版冒泡排序。
传统冒泡排序会固定执行n-1轮遍历,而这段代码通过flag变量做了优化:每轮遍历前将flag置0,若遍历过程中发生元素交换,就把flag设为1;当某一轮遍历结束后flag仍为0,说明数组已经完全有序,直接终止循环,避免了后续无意义的遍历。
代码还原后如下:
void sort(int *arr, size_t len) { int flag = 1, temp; while (flag != 0) { flag = 0; for (int i = 0, j = 1; i < len - 1; i++, j++) { if (arr[i] > arr[j]) { flag = 1; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } }
内容的提问来源于stack exchange,提问作者Satyam S
相关产品推荐
相关产品推荐

