冒泡排序算法代码是什么?


本文摘自PHP中文网,作者coldplay.xixi,侵删。

冒泡排序算法代码是什么?

冒泡排序算法代码是:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

void vBubbleSort(int arr[], int len){

    int i, j, temp;

    for (j = 0; j < len - 1; j++){            //每次最大元素就像气泡一样"浮"到数组的最后

        for (i = 0; i < len - 1 - j; i++){    //依次比较相邻的两个元素,使较大的那个向后移

            if(arr[i] > arr[i + 1]){            //交换两个数

                temp = arr[i];

                arr[i] = arr[i + 1];

                arr[i + 1] = temp;

            }

        }

    }

}

void vBubbleSortChange(int arr[], int len){

    int i,j,temp;

    int swapped = 1;

    for (j = 0; swapped; j++){            //每次最大元素就像气泡一样"浮"到数组的最后

        swapped = 0;

        for (i = 0; i < len - 1 - j; i++){    //依次比较相邻的两个元素,使较大的那个向后移

            if(arr[i] > arr[i + 1]){            //交换两个数

                temp = arr[i];

                arr[i] = arr[i + 1];

                arr[i + 1] = temp;

                swapped = 1;

            }

        }

//        if(    swapped == 0) {j = len-1;}//如果没有元素交换,说明序列是顺序的,退出循环

    }

}

void vCockTailSort(int arr[],int len){

    int tmp,i,left=0,right = len-1;

    while(left < right){

        for(i=left;i<right;i++){//正向冒泡,确定最大值

            if(arr[i]>arr[i+1]){

                tmp = arr[i];

                arr[i] = arr[i+1];

                arr[i+1] = tmp;

            }

        }

        right--;

        for(i=right;i>left;i--){//反向冒泡,确定最小值

            if(arr[i]<arr[i-1]){

                tmp = arr[i];

                arr[i] = arr[i-1];

                arr[i-1] = tmp;

            }

        }

        left++;

    }

}

void vCockTailSortChange(int arr[],int len){

    int tmp,i,left=0,right = len-1;

    int swapped = 1;

    int bound = 0;//记录某趟遍历的最后一次交换元素的位置,优化减少循环次数

    while(swapped){//如果没有元素交换,说明序列是顺序的

        swapped = 0;

        for(i=left;i<right;i++){//正向冒泡,确定最大值

            if(arr[i]>arr[i+1]){

                tmp = arr[i];

                arr[i] = arr[i+1];

                arr[i+1] = tmp;

                swapped = 1;

                bound = i;

            }

        }

        right=bound;//缩小遍历边界

        for(i=right;i>left;i--){//反向冒泡,确定最小值

            if(arr[i]<arr[i-1]){

                tmp = arr[i];

                arr[i] = arr[i-1];

                arr[i-1] = tmp;

                swapped = 1;

                bound = i;

            }

        }

        left=bound;//缩小遍历边界

    }

}

推荐教程:《C语言视频教程》

以上就是冒泡排序算法代码是什么?的详细内容!

相关阅读 >>

冒泡排序算法代码是什么?

更多相关阅读请进入《冒泡排序算法》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...