#include#include #include #include #include #include #include #include #include #pragma warning(disable:4996) using namespace std; //从前往后两两比较相邻元素的值,若为逆序,则交换它们,直到序列比较完, //称这样过程为“一趟”冒泡排序,最多只需n-1趟排序。 //每一趟排序都可以使一个元素移动到最终位置,已经确定最终位置的元素在之后的处理中无需再对比, //如果某一趟排序过程中未发生“交换”,则算法可提前结束。 //冒泡排序 void swap(int& a, int& b)//传引用。C++提供了swap函数,可不写 { int temp = a; a = b; b = temp; } void BubbleSort(int A[], int n) { for (int i = 0; i < n - 1; i++) {//外层循环控制趟数 bool flag = false;//表示本趟冒泡是否发生交换的标志 for (int j = 0; j < n - i - 1; j++) {//一趟冒泡过程 if (A[j] > A[j + 1]) {//若为逆序 swap(A[j], A[j + 1]);//交换 flag = true; } } if (flag == false)return;//本趟遍历后没有发生交换,说明表已经有序 } } int main() { printf("输入数组元素个数:"); int n; scanf("%d", &n); printf("输入数组元素:"); int nums[1000]; int num; for (int i = 0; i < n; i++) { scanf("%d", &num); nums[i] = num; } //冒泡排序 BubbleSort(nums, n); //排序后结果 printf("排序后结果为:"); for (int i = 0; i < n; i++) { printf("%d ", nums[i]); } printf("n"); system("pause"); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)