黑马程序员技术交流社区

标题: 关于冒泡排序的步骤总结,和选择排序思想。 [打印本页]

作者: KongPro    时间: 2015-8-9 18:27
标题: 关于冒泡排序的步骤总结,和选择排序思想。
定义数组,长度必须是常量 (定义数组时,长度必须确定)。

数组名字代表数组首地址,参数传递时,用指针类型的变量接收,只是传了首地址;通过地址来对数组进行操作。

例子:
    冒泡排序思想:大的上浮,小的下沉(由小到大排序,由大到小则相反),外循环控制比较趟数,内循环控制每趟的比较次数。
    例如:10个数字比较9趟,每趟只比较当前趟数-1即可(9个数比较8次)。

    选择排序:
        1.当前无序区查找最大值与数组第一个元素比较,
        2.如果最大元素下的标等于首元素下标,不交换。
        3.大于(或小于)首元素则交换位置,交换后首元素位置认定为有序区。
        4.再从无序区选取最大值,重复上述步骤。
    例如:
    原始数组: 4,8,0,4,9,7,2

        第一次:9,|8,0,4,4,7,2(9是无序区最大元素,与无序区第一个元素4交换)
        第二次:9,8,|0,4,4,7,2 (8为最大元素,是无序区第一个元素,不需要交换位置)
        第三次:9,8,7,|4,4,0,2(7与0交换)
        第四次:9,8,7,4,|4,0,2(不交换)
        第五次:9,8,7,4,4,|0,2(不交换)
        第六次:9,8,7,4,4,2,|0(2与0交换)

        


每次比较无序区,先用k(中间变量)记录当前无序区首元素下标 i,比较后用k记录无序区最大值下标,用来与 i 判断,不是同一下标就进行交换。

2.字符串数组

strlen计算长度,补包括'\0',sizeof计算长度包括'\0'






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2