起泡排序bubblesort

来源:互联网 发布:农村淘宝是做什么的 编辑:程序博客网 时间:2024/04/28 21:50
cmprtimes 记录比较的次数,用了flag以后可以减少比较次数,原因是如果某一轮没有交换数据,那么序列就已经是有序的了,不需要再做任何操作。
#include <stdio.h>#include <stdlib.h>void bubbleSort(int *arr,int n){    int i = 0;    int j = 0;    int cmprtimes = 0;    int flag;    for(i = 0;i<n-1;i++){            flag = 0;        for(j = 0;j<n-1-i;j++){            cmprtimes++;            if(arr[j] > arr[j+1]){                flag = 1;                int tmp;                tmp = arr[j];                arr[j] = arr[j+1];                arr[j+1] = tmp;            }        }        if(flag == 0) break;    }    printf("%d\n",cmprtimes);    int k;    for(k = 0;k<n;k++){        printf("%d ",arr[k]);    }}int main(){    int arr[5] = {1,5,2,3,4};    bubbleSort(arr,5);    printf("\nHello world!\n");    return 0;}

0 0
原创粉丝点击