博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构——十大排序算法
阅读量:5108 次
发布时间:2019-06-13

本文共 1960 字,大约阅读时间需要 6 分钟。

1.插入排序

 

 void INSERTSORT(KEYTYPE k[], int n)

{
    
int i,j;
    keytype temp;
    
for (i = 
2; i<n;i++) {
        temp = k[i];
        j = i - 
1;
        
while (j>
0 && temp<k[j])
            k[j+
1]=k[j--];
            k[j+
1]=temp;
    }
}

 

2.折半插入排序算法

 

 void BIN_INSERTSORT(keytype K[], int n)

{
    
int i,j,high,mid;
    keytype temp;
    
for (i=
2; i<=n; i++) {
        temp = K[i];
        low = 
1;
        high = i-
1;
        
while (low<=high) {
            mid = (low + high)/
2;
            
if (temp<K[mid])
                    high=mid-
1;
                
else
                    low=mid+
1;
        }
        
for (j=i-
1; j>=low; j--)
            K[j+
1]=K[j];
            k[low]=temp;
    }
}

 

3.选择排序

 void SELECTSORT(keytype K[],int n)

{
    
int i,j,d;
    keytype temp;
    
for (i=
1; i<=n-
1; i++) {
        d=i;
        
for (j=i+
1; j<=n; j++)
            
if(K[j]<K[d])
                d=j;
        
if (d!=i) {
            temp=k[d];
            K[d]=K[i];
            K[i]=temp;
        }
    }
}

4.泡排序

 void BUBBLESORT(keytype k[],int n)

{
    
int i,j,flag=
1;
    keytype temp;
    i=n-
1;
    
while (i>
0 && flag==
1) {
        flag=
0;
        
for (j=
1; j<=i; j++)
            
if (k[j]>k[j+
1]) {
                temp=k[j];
                k[j]=k[j+
1];
                k[j+
1]=temp;
                flag=
1;
            }
        i--;
    }
}

5.谢尔排序

 void SHELLSORT(keytype k[],int n)

{
    
int i,j,flag,gap=n;
    keytype temp;
    
while (gap>
1) {
        gap=gap/
2;
        
do{
            flag=
0;
            
for (i=
1; i<n-gap; i++) {
                j=i+gap;
                
if (k[i]>k[j]) {
                    temp=k[i];
                    k[i]=k[j];
                    k[j]=temp;
                    flag=
1;
                }
            }
        }
while (flag!=
0);
    }
}

6.快速排序

 void QUICK(keytype k[],int s,int t)

{
    
int i,j;
    
if (s<t) {
        i=s;
        j=t+
1;
        
while (
1) {
            
do i++;
            
while (!(k[s]<=k[i] || i==t));
            
do j--;
            
while (!(k[s]<=k[i] || j==s));
            
if (i<j)
                    SWAP(k[i],k[j]);
                
else
                    
break;
        }
        SWAP(k[s],k[j]);
        QUICK(k,s,j-
1);
        QUICK(k,j+
1,t);
    }
}
void QUICKSORT(keytype k[],
int n)
{
    QUICK(k,
1,n);
}

7.堆积排序

 

注:调用一次ADJUST子算法,就把以序号为i的节点作为根节点的二叉树调整为堆积 

 void ADJUST(keytype k[],int i,int n)

{
    
int j;
    keytype temp;
    j=
2*i;
    
while (j<=n) {
        
if(j<n && k[j]<k[j+
1])
            j++;
        
if (temp>=k[j])
            
break;
        k[j/
2]=k[j];
        j=
2*j;
    }
    k[j/
2]=temp;
}

 

 堆排序算法

void HEAPSORT(keytype k[],
int n)
{
    
int i;
    keytype temp;
    
for (i=n/
2; i>=
1; i--)
        ADJUST(k,i,n);
    
for (i=n-
1; i>=
1; i--) {
        temp=k[i+
1];
        k[i+
1]=k[
1];
        k[
1]=temp;
        ADJUST(k,
1,i);
    }

} 

 

8.二路归并排序

7.1 一趟归并扫描子算法

7.2二路归并排序算法

 

8.基数排序

 

 

 

 

 

转载于:https://www.cnblogs.com/yuanjunliang/articles/4668945.html

你可能感兴趣的文章
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
万能的SQLHelper帮助类
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
Html5 离线页面缓存
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Android打包key密码丢失找回
查看>>
VC6.0调试技巧(一)(转)
查看>>
类库与框架,强类型与弱类型的闲聊
查看>>
webView添加头视图
查看>>
php match_model的简单使用
查看>>
在NT中直接访问物理内存
查看>>
Intel HEX 文件格式
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
php_扑克类
查看>>
回调没用,加上iframe提交表单
查看>>
(安卓)一般安卓开始界面 Loding 跳转 实例 ---亲测!
查看>>
Mysql 索引优化 - 1
查看>>
LeetCode(3) || Median of Two Sorted Arrays
查看>>
大话文本检测经典模型:EAST
查看>>