注册 登录
编程论坛 C语言论坛

C++三位状态比较排序 再发一个排序法

xianfajushi 发布于 2020-01-29 19:12, 1750 次点击
程序运行截图
只有本站会员才能查看附件,请 登录
7 回复
#2
xianfajushi2020-01-29 19:14
修改错误后的排序截图
只有本站会员才能查看附件,请 登录

修改的错误为添加如下判断

if (A > C)
    J = A, A = C, C = J, k = true;

测试用例
程序代码:


    int aa[] = { 99, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6 },
        xu = 0, ci = 0, j = 0, jian = 0, lian = sizeof(aa) / sizeof(aa[0]); bool k = false;

#3
xianfajushi2020-01-29 19:14
修改错误后的排序截图
只有本站会员才能查看附件,请 登录

修改的错误为添加如下判断

if (A > C)
    J = A, A = C, C = J, k = true;

测试用例
程序代码:


    int aa[] = { 99, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66,
        6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 33,
        3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55,
        5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77,
        7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8, 77, 7, 66, 6,
        9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1, 99, 9, 88, 8,
        77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 55, 5, 44, 4, 33, 3, 22, 2, 11, 1,
        99, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6, 9, 88, 8, 77, 7, 66, 6 },
        xu = 0, ci = 0, j = 0, jian = 0, lian = sizeof(aa) / sizeof(aa[0]); bool k = false;

#4
xianfajushi2022-02-06 14:46
改进型排序。
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-2-10 21:40编辑过]

#5
xianfajushi2022-02-06 14:47
普通数组遍历,尚未写成递归。 家用电脑测试,开网络视频播放器等。对这样的排序效果很满意了,一次整理头尾4个数据,并使得中间数据逐渐逼近正确位置,最好情况O(N),最坏情况也不会出现O(N*N),最坏情况有待专家测试得出结论。
#6
xianfajushi2022-02-08 12:43
平均每趟整理到位7个数据。还有哪个排序法能达到并超过我这样效果?
#7
xianfajushi2022-02-08 19:06
升级版观音兰花手平均每趟整理到位12个数据,有较大提高,无论置前或置后,另加一条不会有太大提高。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-2-9 05:03编辑过]

#8
xianfajushi2022-02-10 21:27
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-2-10 21:32编辑过]

1