上机六:多种排序算法的比较:希尔排序、起泡排序、简单选择排序、堆排序、直接插入排序、快速排序

排序算法的比较

共五组实验数据,每组1000个数字,包含正序、逆序、三组随机数

内容要求

从一个文本中读取1000个数字,排序后存入另一个文本,并求出每组数据的比较次数和移动次数

代码

五组测试数据已在代码中给出

#include<iostream>//上机6:内部排序算法比较
#include<fstream>
using namespace std;
int bj[10],m[10];
int aa[1000],b[1000],c[1000],d[1000],e[1000];
/*
data.txt:(测试数据)
0 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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
999 998 997 996 995 994 993 992 991 990 989 988 987 986 985 984 983 982 981 980 979 978 977 976 975 974 973 972 971 970 969 968 967 966 965 964 963 962 961 960 959 958 957 956 955 954 953 952 951 950 949 948 947 946 945 944 943 942 941 940 939 938 937 936 935 934 933 932 931 930 929 928 927 926 925 924 923 922 921 920 919 918 917 916 915 914 913 912 911 910 909 908 907 906 905 904 903 902 901 900 899 898 897 896 895 894 893 892 891 890 889 888 887 886 885 884 883 882 881 880 879 878 877 876 875 874 873 872 871 870 869 868 867 866 865 864 863 862 861 860 859 858 857 856 855 854 853 852 851 850 849 848 847 846 845 844 843 842 841 840 839 838 837 836 835 834 833 832 831 830 829 828 827 826 825 824 823 822 821 820 819 818 817 816 815 814 813 812 811 810 809 808 807 806 805 804 803 802 801 800 799 798 797 796 795 794 793 792 791 790 789 788 787 786 785 784 783 782 781 780 779 778 777 776 775 774 773 772 771 770 769 768 767 766 765 764 763 762 761 760 759 758 757 756 755 754 753 752 751 750 749 748 747 746 745 744 743 742 741 740 739 738 737 736 735 734 733 732 731 730 729 728 727 726 725 724 723 722 721 720 719 718 717 716 715 714 713 712 711 710 709 708 707 706 705 704 703 702 701 700 699 698 697 696 695 694 693 692 691 690 689 688 687 686 685 684 683 682 681 680 679 678 677 676 675 674 673 672 671 670 669 668 667 666 665 664 663 662 661 660 659 658 657 656 655 654 653 652 651 650 649 648 647 646 645 644 643 642 641 640 639 638 637 636 635 634 633 632 631 630 629 628 627 626 625 624 623 622 621 620 619 618 617 616 615 614 613 612 611 610 609 608 607 606 605 604 603 602 601 600 599 598 597 596 595 594 593 592 591 590 589 588 587 586 585 584 583 582 581 580 579 578 577 576 575 574 573 572 571 570 569 568 567 566 565 564 563 562 561 560 559 558 557 556 555 554 553 552 551 550 549 548 547 546 545 544 543 542 541 540 539 538 537 536 535 534 533 532 531 530 529 528 527 526 525 524 523 522 521 520 519 518 517 516 515 514 513 512 511 510 509 508 507 506 505 504 503 502 501 500 499 498 497 496 495 494 493 492 491 490 489 488 487 486 485 484 483 482 481 480 479 478 477 476 475 474 473 472 471 470 469 468 467 466 465 464 463 462 461 460 459 458 457 456 455 454 453 452 451 450 449 448 447 446 445 444 443 442 441 440 439 438 437 436 435 434 433 432 431 430 429 428 427 426 425 424 423 422 421 420 419 418 417 416 415 414 413 412 411 410 409 408 407 406 405 404 403 402 401 400 399 398 397 396 395 394 393 392 391 390 389 388 387 386 385 384 383 382 381 380 379 378 377 376 375 374 373 372 371 370 369 368 367 366 365 364 363 362 361 360 359 358 357 356 355 354 353 352 351 350 349 348 347 346 345 344 343 342 341 340 339 338 337 336 335 334 333 332 331 330 329 328 327 326 325 324 323 322 321 320 319 318 317 316 315 314 313 312 311 310 309 308 307 306 305 304 303 302 301 300 299 298 297 296 295 294 293 292 291 290 289 288 287 286 285 284 283 282 281 280 279 278 277 276 275 274 273 272 271 270 269 268 267 266 265 264 263 262 261 260 259 258 257 256 255 254 253 252 251 250 249 248 247 246 245 244 243 242 241 240 239 238 237 236 235 234 233 232 231 230 229 228 227 226 225 224 223 222 221 220 219 218 217 216 215 214 213 212 211 210 209 208 207 206 205 204 203 202 201 200 199 198 197 196 195 194 193 192 191 190 189 188 187 186 185 184 183 182 181 180 179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
41 67 34 0 69 24 78 58 62 64 5 45 81 27 61 91 95 42 27 36 91 4 2 53 92 82 21 16 18 95 47 26 71 38 69 12 67 99 35 94 3 11 22 33 73 64 41 11 53 68 47 44 62 57 37 59 23 41 29 78 16 35 90 42 88 6 40 42 64 48 46 5 90 29 70 50 6 1 93 48 29 23 84 54 56 40 66 76 31 8 44 39 26 23 37 38 18 82 29 41 33 15 39 58 4 30 77 6 73 86 21 45 24 72 70 29 77 73 97 12 86 90 61 36 55 67 55 74 31 52 50 50 41 24 66 30 7 91 7 37 57 87 53 83 45 9 9 58 21 88 22 46 6 30 13 68 0 91 62 55 10 59 24 37 48 83 95 41 2 50 91 36 74 20 96 21 48 99 68 84 81 34 53 99 18 38 0 88 27 67 28 93 48 83 7 21 10 17 13 14 9 16 35 51 0 49 19 56 98 3 24 8 44 9 89 2 95 85 93 43 23 87 14 3 48 0 58 18 80 96 98 81 89 98 9 57 72 22 38 92 38 79 90 57 58 91 15 88 56 11 2 34 72 55 28 46 62 86 75 33 69 42 44 16 81 98 22 51 21 99 57 76 92 89 75 12 0 10 3 69 61 88 1 89 55 23 2 85 82 85 88 26 17 57 32 32 69 54 21 89 76 29 68 92 25 55 34 49 41 12 45 60 18 53 39 23 79 96 87 29 49 37 66 49 93 95 97 16 86 5 88 82 55 34 14 1 16 71 86 63 13 55 85 53 12 8 32 45 13 56 21 58 46 82 81 44 96 22 29 61 35 50 73 66 44 59 92 39 53 24 54 10 45 49 86 13 74 22 68 18 87 5 58 91 2 25 77 14 14 24 34 74 72 59 33 70 87 97 18 77 73 70 63 68 92 85 2 80 13 27 2 99 27 25 43 24 23 72 61 81 3 32 5 93 25 31 92 42 22 86 64 0 87 60 13 74 70 70 35 33 11 60 96 67 85 50 40 94 95 24 19 25 76 94 58 2 71 66 78 93 51 84 18 64 19 52 0 87 60 26 10 57 70 15 76 27 43 58 64 9 82 86 65 87 77 74 25 27 29 28 23 20 2 62 23 96 37 61 95 25 64 60 2 16 30 26 11 71 11 47 53 20 90 24 88 63 40 51 62 29 0 13 58 78 65 7 77 0 58 39 3 60 57 24 77 8 13 87 1 50 60 28 93 84 5 40 11 4 35 56 72 50 23 85 56 16 26 57 26 57 37 71 69 61 96 22 17 12 17 96 85 41 23 29 29 65 59 32 96 55 53 62 84 34 54 72 57 69 32 63 7 83 11 35 67 48 75 38 23 42 54 11 41 75 59 25 21 70 26 34 5 83 50 98 79 1 93 34 37 34 56 93 76 5 62 48 81 0 13 41 55 55 42 62 11 77 24 78 52 43 96 73 40 13 75 72 18 10 17 32 12 95 69 31 40 88 85 90 97 89 90 45 53 14 51 40 44 58 35 59 92 5 64 81 3 29 75 8 92 97 49 56 61 27 67 41 29 40 13 74 1 77 15 83 13 92 24 1 92 59 70 28 27 84 75 86 98 70 87 47 4 3 21 63 6 63 10 71 89 40 64 42 19 13 91 4 18 32 50 5 75 39 3 22 98 47 84 48 71 64 13 75 45 12 46 78 69 62 19 85 89 44 65 40 45 8 18 70 1 23 32 72 52 87 70 63 1 3 23 27 0 69 15 65 28 43 47 88 43 37 9 63 49 81 88 42 8 60 21 58 54 88 46 90 49 43 30 20 48 67 36 83 35 26 85 38 53 29 24 48 23 59 57 66 44 55 18 26 11 25 55 1 49 96 84 15 64 42 75 13 42 96 48 72 26 6 73 29 4 5 26 12 75 93 65 36 36 41 14 94 56 52 36 38 82 55 15 31 30 41 25 11 37 86 90 50 62 34 93 53 16 52 8 62 33 54 3 34 3 56 48 24 17 13 9 28 0 80 18 58 50 55 61 64 3 76 43 9 2 61 89 48 82 53 74 20 2 23 31 69 78 59 8 19 71 3 45 81 4 92 85 13 98 89 22 38 37 10 61 34 8 61 59 93 15 69 37 69 58 0 71 64 17 15 55 15 30 39 12 88 82 54 85 10 84 74 80 15 51 41 15 79 10 98 73 88 77 32 56 89 13 8 41 90 23 63 28 84 78 0 71 85 74 71 33 67 53 95 68 25 76 29 50 98 9 93 86 80 16 49
43 709 120 750 523 630 824 56 324 490 379 619 195 845 195 493 333 400 389 110 425 398 352 155 294 840 551 70 184 361 121 416 565 884 95 378 805 549 165 128 289 725 244 143 803 226 47 609 727 654 685 118 696 791 503 429 733 863 3 780 774 373 880 68 290 804 162 64 618 450 808 719 796 515 396 256 800 23 419 886 95 193 110 420 110 298 528 274 613 558 74 473 652 669 211 228 136 308 731 559 395 37 201 356 506 164 659 532 595 188 583 331 286 426 56 503 139 479 659 530 12 860 283 878 157 793 569 480 481 510 712 264 71 414 648 768 29 889 249 683 363 745 227 617 739 31 243 880 247 830 208 84 868 600 431 754 14 625 116 769 540 145 98 115 238 269 69 491 52 376 525 646 496 366 158 47 710 113 134 510 291 296 55 225 668 412 686 238 369 469 178 687 674 285 49 647 104 403 615 636 103 514 289 581 178 811 537 478 600 113 10 354 518 643 783 736 533 63 431 137 333 701 12 625 346 338 140 404 158 262 592 187 55 376 483 519 50 536 780 750 712 205 432 355 856 865 281 690 510 857 220 860 298 521 794 448 612 448 229 19 567 608 758 530 571 32 556 5 255 373 7 62 366 415 637 58 826 736 581 231 103 482 83 23 161 441 564 819 208 519 450 348 203 671 66 742 619 380 859 319 442 251 594 278 115 789 772 567 339 634 843 302 408 203 157 881 297 246 705 99 351 567 332 519 195 109 635 882 760 123 514 300 25 872 356 159 238 249 460 721 763 381 107 519 26 154 58 523 763 230 795 24 560 456 483 594 110 688 27 387 209 28 519 700 502 349 542 689 383 490 404 208 307 227 756 323 36 496 394 700 141 139 200 289 436 75 727 864 436 74 32 124 398 625 291 544 385 771 416 187 15 304 877 6 322 667 440 490 799 525 364 549 337 851 657 150 369 670 631 863 813 794 635 67 527 601 502 144 352 208 634 798 541 370 215 784 64 756 237 643 177 10 250 229 183 120 142 376 33 314 493 351 826 384 460 552 501 268 240 395 765 622 132 50 697 66 138 329 870 152 132 319 204 781 698 37 501 560 62 671 780 216 263 825 275 268 851 765 303 850 561 106 688 756 125 622 187 831 429 559 378 270 876 126 592 792 597 581 197 685 731 210 488 718 886 453 502 429 16 511 710 843 312 708 375 577 823 314 308 225 529 330 711 550 263 670 691 681 267 652 254 230 563 746 759 326 33 290 405 390 746 48 177 279 134 130 740 479 536 39 35 185 783 59 466 592 315 346 287 50 43 67 449 155 255 127 345 54 98 553 511 92 34 432 440 102 147 163 334 301 833 709 25 93 301 650 237 508 449 832 668 297 543 641 149 67 559 112 740 856 111 705 764 528 81 503 651 304 751 784 230 219 410 843 748 782 787 302 207 659 321 881 712 808 85 687 2 712 866 685 770 243 274 435 877 538 388 612 131 726 586 505 739 745 506 738 271 444 851 815 240 51 707 668 5 102 734 604 337 769 538 503 402 639 89 279 689 186 878 671 679 254 699 549 253 239 379 162 287 760 179 751 681 693 223 18 74 275 306 665 8 678 501 534 309 140 404 108 73 761 638 505 799 465 380 589 132 861 851 482 622 680 517 491 489 490 740 354 752 343 537 653 305 768 676 593 266 330 309 106 715 421 235 298 676 32 883 168 529 667 763 850 203 782 159 646 792 344 723 797 710 498 514 225 156 461 599 233 217 865 58 331 697 239 30 233 485 314 281 207 211 713 611 243 702 688 610 94 799 872 652 466 828 692 847 413 120 758 750 429 98 361 277 260 91 824 87 767 570 654 389 697 291 792 506 749 232 760 549 603 821 811 351 618 826 637 206 256 85 155 160 118 638 210 4 400 423 455 438 491 204 510 729 791 583 54 530 727 624 668 266 438 850 648 60 469 593 245 472 83 419 237 671 636 156 764 336 324 239 587 106 134 690 160 35 128 321 652 553 50 150 470 775 663 471 54 786 658 8 876 76 181 283 170 361 126 341 271 696 11 75 86 396 335 484 446 76 709 281 723 328 725 362 421 885 701 635 15 754 850 719 451 484 263 292 612 391 196 383 20 78 195 409 279 629 407 75 455 60 494 653 514 23 233 581 713 572 377 22 874 556 180 103 288 510 800 390 513 201 327 357 793 240 148 875 790 3 374 654 275 363 242 511 696 837 53 30 322 804 98 633 111 664 185 679 669 403 89 202 403 798 535 236 824 647 255 248 778 350 707
141 567 434 600 269 824 578 458 1062 564 805 245 381 927 1061 591 1095 1042 927 536 491 704 1002 253 392 482 521 816 818 995 547 826 871 638 969 1012 767 399 135 994 803 911 422 433 773 764 241 811 353 968 647 744 762 857 137 959 823 841 629 878 416 135 290 942 388 206 140 1042 364 748 546 905 990 829 470 450 106 201 493 648 729 723 184 1054 856 940 1066 476 1031 408 1044 539 726 423 637 638 218 182 1029 641 933 215 739 758 804 1030 1077 406 773 486 121 845 1024 172 370 929 877 673 197 612 1086 390 261 736 455 867 755 674 131 152 450 250 1041 824 1066 530 207 291 107 437 557 387 853 483 1045 1009 309 858 321 688 522 1046 606 130 513 268 1000 691 862 755 510 459 724 637 648 583 695 141 702 450 391 936 474 120 696 121 448 299 768 584 381 834 153 1099 518 1038 1000 888 227 567 828 993 748 583 907 521 410 717 913 614 409 716 1035 551 700 349 619 656 898 403 324 108 944 709 1089 802 295 585 193 443 623 687 414 603 548 300 558 718 680 896 898 381 689 898 109 257 572 722 638 392 138 279 290 757 1058 291 915 988 256 611 302 734 372 155 428 746 462 986 975 533 969 242 944 516 981 1098 422 751 121 799 657 576 992 489 175 812 700 610 103 969 961 788 501 889 355 523 102 685 282 385 188 526 717 857 932 1032 269 254 821 289 1076 429 468 792 525 655 534 649 541 612 245 160 818 853 239 523 379 1096 787 629 649 537 966 1049 293 295 397 516 386 205 588 382 555 834 214 801 416 771 886 363 413 455 285 153 1012 908 932 1045 413 856 421 658 746 1082 581 244 296 322 229 261 635 550 273 566 144 759 392 539 353 124 254 610 845 749 286 413 574 122 268 118 887 1005 1058 491 302 725 577 514 414 924 434 974 472 259 933 170 587 397 618 277 873 370 863 768 292 1085 202 580 313 727 902 199 627 725 643 1024 123 1072 161 281 103 532 605 693 825 131 592 242 322 386 164 1000 287 460 513 1074 370 270 335 933 811 860 996 767 385 650 240 794 795 724 119 225 676 794 758 402 471 566 778 693 951 584 118 564 219 252 900 187 160 1026 110 857 270 415 676 327 143 858 264 209 982 186 665 587 677 574 725 727 729 1028 523 620 1002 1062 223 696 837 361 295 625 364 360 302 216 130 426 111 871 511 647 253 620 890 1024 288 863 1040 951 762 929 1000 813 1058 678 465 107 577 300 158 539 403 860 457 424 577 208 213 987 901 950 560 528 1093 484 505 640 211 804 935 456 172 450 923 585 656 316 726 457 626 457 437 371 969 461 996 122 717 212 817 796 685 141 523 229 329 665 659 1032 396 955 153 1062 684 834 754 1072 557 469 632 1063 707 583 1011 735 167 948 775 1038 323 242 854 611 841 275 559 925 321 970 726 1034 305 883 950 498 379 801 293 834 737 634 656 1093 276 805 1062 648 981 400 513 741 955 955 242 562 711 977 524 778 852 543 396 773 140 413 975 172 918 710 117 1032 212 795 269 931 140 588 785 190 597 689 1090 245 453 414 751 840 144 358 435 859 292 705 364 281 603 929 875 708 392 1097 649 656 661 727 567 641 229 340 913 274 701 177 315 783 313 1092 924 701 492 859 770 528 127 184 175 886 598 1070 387 947 704 603 321 763 806 463 110 271 589 340 264 642 719 1013 691 804 918 332 850 305 1075 639 403 522 198 347 684 748 1071 964 1013 175 645 812 646 778 869 362 619 1085 389 1044 965 640 345 608 418 970 701 423 232 572 252 187 670 863 1001 203 523 627 700 1069 115 665 128 643 447 188 1043 737 509 563 149 781 688 442 708 160 321 858 1054 988 246 790 1049 943 530 720 848 167 636 883 135 326 285 138 953 729 324 848 1023 459 357 866 1044 1055 418 826 511 125 455 101 649 596 684 615 1064 442 175 1013 242 296 1048 172 526 706 273 529 504 805 726 912 475 193 665 136 836 241 914 1094 356 752 1036 938 582 455 115 231 330 941 725 111 737 286 790 750 762 734 993 453 516 552 108 362 333 554 403 734 403 356 248 224 417 313 209 128 300 180 418 958 150 255 461 364 1003 776 743 1009 1002 661 589 1048 382 753 774 320 502 1023 931 469 978 359 108 719 1071 103 1045 881 604 492 785 413 798 689 822 1038 137 510 561 334 608 1061 1059 593 615 369 1037 969 158 800 1071 364 217 315 655 915 430 139 312 388 182 1054 185 810 584 874 480 915 1051 641 215 779 210 998 173 888 1077 232 1056 789 213 108 1041 890 823 463 128 284 878 300 171 985 1074 171 433 967 253 395 268 925 776 729 750 698 409 793 786 180 216 349
*/
ofstream out("datasave.txt");
void save(int n,int *a)//文本保存
{
	for(int i=0;i<n;i++)
	{
		out<<a[i]<<" ";
	}
	out<<endl<<endl;
}
void mp(int n,int *a)//冒泡排序
{
	bj[0]=0;
	m[0]=0;
	int bound=n-1,t,aa;
	while(bound!=0)//当bound!=0时,进行一次起泡运算
	{
		t=0;//交换标志置为0,假定未交换
		for(int j=0;j<bound;j++)
		{
			if(a[j]>a[j+1])//逆序
			{
				//交换
				aa=a[j];
				a[j]=a[j+1];
				a[j+1]=aa;
				t=j;
				//移动了三次
				m[0]+=3;
			}
			bj[0]++;
		}
		bound=t;
	}
	cout<<"比较次数为"<<bj[0]<<"次"<<endl;
	cout<<"移动次数为"<<m[0]<<"次"<<endl;
	save(1000,a);//保存本次排序后的结果
}
void insertsort(int n,int *a)//直接插入排序(稳定)
{//原理:将第一个元素看成初始有序表,后面的数据排序将最小的放在下一位
	m[1]=0;
	bj[1]=0;
	int i,j,temp;
	for(i=1;i<n;i++)
	{
		temp=a[i];
		j=i-1;
		m[1]++;
		while(j>=0&&a[j]>temp)
		{
			a[j+1]=a[j];
			m[1]++;
			j--;
			bj[1]++;
		}
		bj[1]++;
		m[1]++;
		a[j+1]=temp;
	}
	cout<<"比较次数为"<<bj[1]<<"次"<<endl;
	cout<<"移动次数为"<<m[1]<<"次"<<endl;
	save(1000,a);
}
void selectsort(int n,int *a)//简单选择排序
{//第二组(逆序)测试数据不算最坏情况,最坏情况移动次数2997
	bj[2]=0;
	m[2]=0;
	int k,j;
	for(int i=0;i<1000-1;i++)
	{
		k=i;
		for(j=i+1;j<1000;j++)
		{
			bj[2]++;
			if(a[j]<=a[k])
			{k=j;}
		}
		if(k!=i)
		{
			swap(a[k],a[i]);
			m[2]+=3;
		}
	}
	save(1000,a);
	cout<<"比较次数为"<<bj[2]<<"次"<<endl;
	cout<<"移动次数为"<<m[2]<<"次"<<endl;
}
void quicksort(int *a,int p,int q)//快速排序
{
	int md,aaa,i,j;
	if(p<q)
	{
		i=p;
		j=q+1;
		aaa=a[p];
		m[3]++;
		while(i<j)
		{
			i++;
			while(a[i]<aaa)
			{
				i++;
				bj[3]++;
			}
			bj[3]++;
			j--;
			while(a[j]>aaa)
			{
				j--;
				bj[3]++;
			}
			bj[3]++;
			if(i<j)
			{
				md=a[i];
				a[i]=a[j];
				a[j]=md;
				m[3]+=3;
			}
		}
		md=a[p];
		a[p]=a[j];
		a[j]=md;
		m[3]+=3;
		quicksort(a,p,j-1);
		quicksort(a,j+1,q);
	}
}
void shellinsert(int *a,int n,int d)//n为元素个数,d为增量
{
	for(int i=d+1;i<n;i++)
	{
		if(a[i]<a[i-d])
		{
			bj[4]++;
			a[0]=a[i];
			m[4]++;
			int j;
			for(j=i-d;j>0&&a[0]<a[j];j=j-d)//确保j>0
			{
				bj[4]++;
				a[j+d]=a[j];
				m[4]++;
			}
			bj[4]++;
			a[j+d]=a[0];
			m[4]++;
		}
		else
		{
			bj[4]++;
		}
	}
}
void shellsort(int *a,int n) //希尔排序:先进行大范围调节在进行小范围调节
{//首先取d<n作为间隔,然后一直缩小间隔,直到d=1,将所有数据放在同一序列
	bj[4]=0;
	m[4]=0;
	int d=n/2;//子序列间隔
	while(d>=1)//结束排序
	{
		shellinsert(a-1,n+1,d);//调用一次直接插入排序
		d/=2;//缩小d
	}
	save(1000,a);
	cout<<"比较次数为"<<bj[4]<<"次"<<endl;
	cout<<"移动次数为"<<m[4]<<"次"<<endl;
}
void resort(int *a,int f,int e)//重排堆
{
	int j=f,aaa,z;
	while(j<=e/2)
	{
		if((2*j<e)&&(a[2*j]<a[2*j+1]))
		{
			z=2*j+1;
			bj[5]++;
		}
		else
			z=2*j;
		bj[5]++;
		if(a[z]>a[j])
		{
			aaa=a[z];
			a[z]=a[j];
			a[j]=aaa;
			m[5]+=3;
			j=z;
		}
		else j=e;
	}
}
void duisort(int *a,int n)//堆排序
{
	bj[5]=0;
	m[5]=0;
	int i,aaa;
	int *b=a-1;
	for(i=n/2;i>0;i--)
		resort(b,i,n);
	for(i=n;i>1;i--)
	{
		aaa=b[1];
		b[1]=b[i];
		b[i]=aaa;
		m[5]+=3;
		resort(b,1,i-1);
	}
	save(1000,a);
	cout<<"比较次数为"<<bj[5]<<"次"<<endl;
	cout<<"移动次数为"<<m[5]<<"次"<<endl;
}
void wenben()//读取文本
{
	ifstream in("data.txt");
	for(int i=0;i<1000;i++)
		in>>aa[i];
	for(int i=0;i<1000;i++)
		in>>b[i];
	for(int i=0;i<1000;i++)
		in>>c[i];
	for(int i=0;i<1000;i++)
		in>>d[i];
	for(int i=0;i<1000;i++)
		in>>e[i];
	in.close();
}
int main()
{
	int ch=1;
	cout<<"文本共有5组数据:正序,逆序,三组随机数"<<endl;
	while(ch)
	{
		cout<<"请选择操作:1.冒泡排序 2.直接插入排序 3.简单选择排序"<<endl;
		cout<<"            4.快速排序 5.希尔排序     6.堆排序"<<endl;
		cout<<"            0.退出"<<endl;
		cin>>ch;
		switch(ch)
		{
		case 1://冒泡排序
			wenben();
			cout<<"第1组排序完毕,已存入datasave.txt"<<endl;
			mp(1000,aa);
			//save(1000,aa);
			cout<<"第2组排序完毕,已存入datasave.txt"<<endl;
			mp(1000,b);
			//save(1000,b);
			cout<<"第3组排序完毕,已存入datasave.txt"<<endl;
			mp(1000,c);
			//save(1000,c);
			cout<<"第4组排序完毕,已存入datasave.txt"<<endl;
			mp(1000,d);
			//save(1000,d);
			cout<<"第5组排序完毕,已存入datasave.txt"<<endl;
			mp(1000,e);
			//save(1000,e);
			break;
		case 2://直接插入排序
			wenben();
			cout<<"第1组排序完毕,已存入datasave.txt"<<endl;
			insertsort(1000,aa);
			//save(1000,aa);
			cout<<"第2组排序完毕,已存入datasave.txt"<<endl;
			insertsort(1000,b);
			//save(1000,b);
			cout<<"第3组排序完毕,已存入datasave.txt"<<endl;
			insertsort(1000,c);
			//save(1000,c);
			cout<<"第4组排序完毕,已存入datasave.txt"<<endl;
			insertsort(1000,d);
			//save(1000,d);
			cout<<"第5组排序完毕,已存入datasave.txt"<<endl;
			insertsort(1000,e);
			//save(1000,e);
			break;
		case 3://简单选择排序
			wenben();
			cout<<"第1组排序完毕,已存入datasave.txt"<<endl;
			selectsort(1000,aa);
			//save(1000,aa);
			cout<<"第2组排序完毕,已存入datasave.txt"<<endl;
			selectsort(1000,b);
			//save(1000,b);
			cout<<"第3组排序完毕,已存入datasave.txt"<<endl;
			selectsort(1000,c);
			//save(1000,c);
			cout<<"第4组排序完毕,已存入datasave.txt"<<endl;
			selectsort(1000,d);
			//save(1000,d);
			cout<<"第5组排序完毕,已存入datasave.txt"<<endl;
			selectsort(1000,e);
			//save(1000,e);
			break;
		case 4://快速排序
			wenben();
			
			m[3]=0;
         	bj[3]=0;
			cout<<"第1组排序完毕,已存入datasave.txt"<<endl;
			quicksort(aa,0,999);
			cout<<"比较次数为"<<bj[3]<<"次"<<endl;
			cout<<"移动次数为"<<m[3]<<"次"<<endl;
			save(1000,aa);
			
			m[3]=0;
         	bj[3]=0;
			cout<<"第2组排序完毕,已存入datasave.txt"<<endl;
			quicksort(b,0,999);
			cout<<"比较次数为"<<bj[3]<<"次"<<endl;
			cout<<"移动次数为"<<m[3]<<"次"<<endl;
			save(1000,b);
			
			m[3]=0;
         	bj[3]=0;
			cout<<"第3组排序完毕,已存入datasave.txt"<<endl;
			quicksort(c,0,999);
			cout<<"比较次数为"<<bj[3]<<"次"<<endl;
			cout<<"移动次数为"<<m[3]<<"次"<<endl;
			save(1000,c);
			
			m[3]=0;
         	bj[3]=0;
			cout<<"第4组排序完毕,已存入datasave.txt"<<endl;
			quicksort(d,0,999);
			cout<<"比较次数为"<<bj[3]<<"次"<<endl;
			cout<<"移动次数为"<<m[3]<<"次"<<endl;
			save(1000,d);
			
			m[3]=0;
         	bj[3]=0;
			cout<<"第5组排序完毕,已存入datasave.txt"<<endl;
			quicksort(e,0,999);
			cout<<"比较次数为"<<bj[3]<<"次"<<endl;
			cout<<"移动次数为"<<m[3]<<"次"<<endl;
			save(1000,e);
			break;
		case 5://希尔排序
			wenben();
			cout<<"第1组排序完毕,已存入datasave.txt"<<endl;
			shellsort(aa,1000);
			//save(1000,aa);
			cout<<"第2组排序完毕,已存入datasave.txt"<<endl;
			shellsort(b,1000);
			//save(1000,b);
			cout<<"第3组排序完毕,已存入datasave.txt"<<endl;
			shellsort(c,1000);
			//save(1000,c);
			cout<<"第4组排序完毕,已存入datasave.txt"<<endl;
			shellsort(d,1000);
			//save(1000,d);
			cout<<"第5组排序完毕,已存入datasave.txt"<<endl;
			shellsort(e,1000);
			//save(1000,e);
			break;
		case 6://堆排序
			wenben();
			cout<<"第1组排序完毕,已存入datasave.txt"<<endl;
			duisort(aa,1000);
			//save(1000,aa);
			cout<<"第2组排序完毕,已存入datasave.txt"<<endl;
			duisort(b,1000);
			//save(1000,b);
			cout<<"第3组排序完毕,已存入datasave.txt"<<endl;
			duisort(c,1000);
			//save(1000,c);
			cout<<"第4组排序完毕,已存入datasave.txt"<<endl;
			duisort(d,1000);
			//save(1000,d);
			cout<<"第5组排序完毕,已存入datasave.txt"<<endl;
			duisort(e,1000);
			//save(1000,e);
			break;
		}
	}
	out.close();
	/
	cout<<endl;
	cout<<"对每组和所有结果的分析:"<<endl;
	cout<<"(1)从算法的简单性来看:"<<endl;
	cout<<"简单插入排序、简单选择排序、起泡排序属于简单算法"<<endl;
	cout<<"希尔排序、堆排序、快速排序属于复杂算法"<<endl;
	cout<<"(2)从时间复杂度来看:"<<endl;
	cout<<"基于排序码比较和交换的排序算法可能达到的最佳时间是O(nlog2n)"<<endl;
	cout<<"(3)从稳定性来看:"<<endl;
	cout<<"稳定:简单插入排序、起泡排序"<<endl;
	cout<<"不稳定:希尔排序、简单选择排序、快速排序、堆排序"<<endl;
	cout<<"(4)从待排序的元素个数来看:"<<endl;
	cout<<"待排序的元素个数n越小,采用简单排序方法越合适;n越大,采用改进的排序方法越合适"<<endl;
	cout<<"(5)从关键码的分布情况来看:"<<endl;
	cout<<"当待排序元素按关键码有序时,直接插入排序和起泡排序能达到O(n)的时间复杂度,但此时对于快速排序是最坏的情况,时间复杂度为O(n2)"<<endl;
	cout<<"简单选择排序、堆排序的时间性能不随元素序列中关键码的分布而改变"<<endl;
	/
}

自述

作者的一番心血,留个赞?

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纸梯先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值