C语言:冒泡排序

void sort(int arr[],int len) {
    int tmp = -1;
    for(int i = 1 ; i<len; i++) {
        printf("第%d轮:\n", i);
        // len-i+1:新轮比上轮可以少一次比较,-i
        // i从1开始,第一轮不能少,故+1以修正
        for(int j = 1; j < len-i+1; j++) {
            if (arr[j-1] > arr[j]) {
                tmp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = tmp;
            }
            printArr(arr, len);
        }
    }
}

void printArr(int arr[],int len ) {
    for(int i = 0 ; i<len; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

main中调用

    int a[] = {5,4,3,2,1};

    sort(a, 5);

输出结果:

第1轮:
4 5 3 2 1
4 3 5 2 1
4 3 2 5 1
4 3 2 1 5
第2轮:
3 4 2 1 5
3 2 4 1 5
3 2 1 4 5
第3轮:
2 3 1 4 5
2 1 3 4 5
第4轮:
1 2 3 4 5
时间: 2024-10-16 15:27:46

C语言:冒泡排序的相关文章

C语言 冒泡排序

冒泡排序嵌套两个for循环,来个随机的数组 int num[]={1,56,23,12,58,45};    int n=sizeof(num)/sizeof(int);    int number;    for (int i=0;i<n;i++) {        for (int j=0;j<n-i-1;j++) {            if (num[j]>num[j+1]) {                number=num[j];                num[

c语言----- 冒泡排序 for while do-while 递归练习

1. 冒泡排序简介(默认从小到大排序) 核心思想:只比较相邻的两个元素,如果满足条件就交换    5 8 2 1 6 9 4 3 7 0 目标:0 1 2 3 4 5 6 7 8 9 第一次排序: 5 < 8 不交换 5 8 2 1 6 9 4 3 7 0 8 >2 满足条件 交换.... 5 2 8 1 6 9 4 3 7 0 5 2 1 8 6 9 4 3 7 0 5 2 1 6 8 9 4 3 7 0 5 2 1 6 8 9 4 3 7 0 5 2 1 6 8 4 9 3 7 0 5 2

C语言 冒泡排序 递归法

1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 6 void bubble(int *a,int n); 7 8 int i,n,a[100]; 9 10 printf("请输入数组中元素数量(不大于100个):"); 11 scanf("%d",&n); 12 13 for(;n<1||n>100;){ 14 printf("元素数量超

C语言冒泡排序

//--------------------------------------------------------------------------- #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #include <iostream> #include <stdio.h> using namespace

C语言冒泡排序法

#include<stdio.h> void main() { int a[10]; int i,j,t; printf("input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]);for(j=0;j<9;j++) /*进行9次循环 实现9趟比较*/ for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/ if(a[i]>a[i+1]) /*相邻

C语言冒泡排序实现

http://zhidao.baidu.com/link?url=DqmtzjojfJNHGh0bIsRL_hLq_Cac_uwCL2HpLW3wWuSseeTJwMkmSfuUfG-Ke8RjQ879zUXN1WIwygNp55HJDa

c语言冒泡排序算法

#include <stdio.h> int main(void){ int a[5]; printf("please input sort number:"); int k; for(k=0;k<5;k++) { scanf("%d",&a[k]);//int类型要加&符号取地址 } //开始排序 int n = sizeof(a)/sizeof(a[0]); printf("数组共%d个数\n",n); in

C语言排序和查找

1.C语言选择排序算法及代码 选择排序是排序算法的一种,这里以从小到大排序为例进行讲解. 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直到所有的数从小到大排序. 在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换. 下面,以对 3  2  4  1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所在的位置. 第1轮 排序过程 (寻找第1小的数所在的位置) 3

【算法】冒泡排序C语言实现

冒泡排序应该是我大学里遇见的第一个排序算法,没记错的话应该还是C语言课上讲指针的时候老师给介绍的,当时因为心思完全没在学习上,还沉浸在高考结束的狂欢状态,想着进了大学就真的可以爱谁谁了,反正我是不要再努力读书了,看到黑板上老师写的什么i,j两层嵌套什么的,就一个感觉,真尼玛蛋疼,快下课吧.到后来直接连课都不去上了,想想当初还是挺二逼的. 我的另一位老师又曾经说过,你们啊,上课不听的话,可以,但是要记住我一句话:出来混迟早是要还的,你在学校里不听,除了这个校门你还是要补会来的. 哎,这血淋淋的事实

c语言最基础的冒泡排序和快速排序

学C语言刚学到数组,学到数组排序必不可少,这只是两种最基础的排序方法 以下排序是根据数字的从大到小排序 冒泡排序 快速排序