首页 > 编程语言 > 详细

插入排序C语言

时间:2021-09-03 18:55:43      阅读:15      评论:0      收藏:0      [点我收藏+]
 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 typedef int ElemType;
 4 //直接插入排序
 5 void InsertSort(ElemType A[], int n) {
 6     int i, j;
 7     for (i =2; i <= n; i++) {
 8         A[0] = A[i];
 9         j = i - 1;
10         while (A[0] < A[j]) {
11             A[j+1] = A[j];
12             j = j - 1;
13         }
14         A[j + 1] = A[0];
15     }
16 }
17 //折半插入排序
18 void BinSort(ElemType A[], int n) {
19     int i, j, low, high, mid;
20     for (i = 2; i <= n; i++) {
21         A[0] = A[i];
22         low = 1;
23         high = i - 1;
24         while (low <= high) {
25             mid = (low + high) / 2;
26             if (A[mid] > A[0])
27                 high = mid - 1;
28             else
29                 low = mid + 1;
30         }
31         for (j = i - 1; j >= high + 1; --j)
32             A[j + 1] = A[j];
33         A[high + 1] = A[0];//A[low]=A[0];
34     }
35 }
36 //希尔排序
37 void ShellInsert(ElemType A[], int n,int delta) {
38     int i, j;
39     for(i=1+delta;i<=n;i++)
40         if (A[i] < A[i - delta]) {
41             A[0] = A[i];
42             for (j = i - delta; j > 0 && A[0] < A[j]; j -= delta)
43                 A[j + delta] = A[j];
44             A[j + delta] = A[0];
45         }
46 }
47 void ShellSort(ElemType A[], int n, int delta[], int dn) {
48     int i, j;
49     for (i = 0; i <= n - 1; ++i)
50         ShellInsert(A, n, delta[i]);
51 }
52 //希尔建议希尔排序
53 void ShellSort(ElemType A[], int n) {
54     int dk,i,j;
55     for(dk=n/2;dk>=1;dk=dk/2)
56         for (i = dk + 1; i <= n; ++i) {
57             if (A[i] < A[i - dk]) {
58                 A[0] = A[i];
59                 for (j = i - dk; j > 0 && A[0] < A[j]; j -= dk)
60                     A[j + dk] = A[j];
61                 A[j + dk] = A[0];
62             }
63         }
64 }

 

插入排序C语言

原文:https://www.cnblogs.com/Lorrained/p/15221028.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!