基础排序——冒泡、选择

来源:互联网 发布:c语言基本数据类型长度 编辑:程序博客网 时间:2024/04/29 04:13

选择排序1(每一次选择出一个最小(大)的值交换位置i上)(可能会导致小的交换到了后面)

for (int i = 0; i < n; i++){for (int j = i+1; j < n; j++){if (a[i]<a[j]){swap(a[i],a[j]);}}}


选择排序2(每一次选择出一个最小(大)的下标放在位置i上)

for (int i = 0; i < n; i++){int index=i;for (int j = i+1; j < n; j++){if (a[i]<a[j]){index = j;}}if(index!=i){swap(a[i],a[index]);}}



冒泡排序1(从后向前两两比较,小的放在前面,每次最小的放在最前面)

for (int i = 0; i < n; i++){for (int j = n-1; j > i; j--){if (a[j]>a[j-1]){swap(a[i],a[j-1]);}}}


冒泡排序2(从后向前两两比较,小的放在前面,每次最小的放在最前面,直到没有元素进行交换)

int exc = 1;for (int i = 0; i < n&&exc; i++){exc = 0;for (int j = n-1; j > i; j--){if (a[j]>a[j-1]){swap(a[i],a[j-1]);exc = 1;}}}