C语言冒泡排序法代码

Python014

C语言冒泡排序法代码,第1张

冒泡排序每一趟排序把最大的放在最右边。

比如:

87 12 56 45 78

87和12交换:12 87 56 45 78

87和56交换:   56 87 45 78

87和45交换:      45 87 78

87和78交换:         78 87

到此第一趟排序结束,接下来的每一趟排序都是这样。

#include<stdio.h>

void Print(int *num, int n)

{

    int i

    for(i = 0 i < n i++)

        printf("%d ", num[i])

    puts("\n")

    return

}

void Bubble_Sort(int *num, int n)

{

    int i, j

    for(i = 0 i < n i++)

    {

        for(j = 0 i + j < n - 1 j++)

        {

            if(num[j] > num[j + 1])

            {

                int temp = num[j]

                num[j] = num[j + 1]

                num[j + 1] = temp

            }

            Print(num, n)

        }

    }

    return

}

int main()

{

    int num[8] = {87, 12, 56, 45, 78}

    Bubble_Sort(num, 5)

    return 0

}

C语言代码和运行结果如下:

可见成功按从大到小排序,望采纳~

附源码:

#include <stdio.h>

void sort(int a[], int n) { 

    int i, j, t

    for (i = 0i <n - 1i++) {

        for (j = 0j <n - 1 - ij++)

            if (a[j] <a[j + 1]) { // 将小数交换到后面

                t = a[j] 

                a[j] = a[j + 1] 

                a[j + 1] = t

            }

    }

}

void display(int a[], int n) {

    int i

    for (i = 0i <ni++)

        printf("%d ", a[i])

    printf("\n")

}

int main() {

    int a[] = {1,3,2,8,0,6}

    int n = sizeof(a) / sizeof(a[0])

    printf("从大到小冒泡排序:\n")

    sort(a, n)

    display(a, n)

    return 0

}

选择排序:

void select_sort(int a[],int n)        //传入数组的要排序的元素个数

{int i,j,min,t

for(i=0i<n-1i++)

{  min=i     //min:当前最小值下标

for(j=i+1j<nj++)        //扫描余下的部分

if(a[min]>a[j])        //若有其它元素更小,就记录其下标

min=j

if(min!=i)        //保若最小值不在排序区首位,就换到首位

{t=a[min]a[min]=a[i]a[i]=t}

}

}

冒泡排序:

void bubble_sort(int a[], int n)        //传入数组的要排序的元素个数

{ int i, j, t

for (j=0j<n-1j++)        //n个元素比较n-1轮

for (i= 0i<n-1-ji++)   //比较相信的两个数

if(a[i]>a[i+1])          //若大小顺序不符,就交换

{t=a[i] a[i]=a[i+1]a[i+1]=t

}