...
...
节点值交换法: 设置两个链表指针p、q,第一个用来指向头结点后一个(head->next)(每次内层循环结束,则往后移动),第二个用来继承当前p节点后一个(p ->next),在内层循环中不断往后移动,期间满足交换条件则交换,直至排序完毕。实际上与用指针做冒泡排序时一样 ...
; //类 class List { public: //构造器初始化,生成头节点 List() ...
计算冒泡排序的交换次数: 逆序数概念:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序 一个排列中所有逆序个数总和叫做这个排列的逆序数。 所以冒泡排序结束即是所有的逆序数为0 思路: 暴力:我们要计算逆序数,即使要统计出该值位置之前有多少个 ...
由于基础代码的特殊(链表为无头链表),以下冒泡排序算法采用两种方式进行排序。首先对首节点往后的所有节点进行排序,这里使用的是对其索引顺序改变的方法。然后对首节点进行排序,只需要一次循环即可,这里使用的是对节点中的数值进行交换的方法。 ...
...
交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 排序入门之冒泡排序 冒泡排序是典型的交换排序算法。冒泡排序的时间复杂度为O(n2),可以说效率比较低,但是,冒泡排序 ...
0.简介 交换排序的基本思想是:两两比较,如果两个记录不满足次序要求,则进行交换,直到整个序列全部满足要求为止 冒泡排序是一种最简单的交换排序方法,它通过两两比较相邻记录,如果发生逆序,则进行交换,从而使小的记录如气泡一样逐渐往上“漂浮”(左移),或者使大的记录如石块一样逐渐往下“坠落”(右移 ...