2019独角兽企业重金招聘Python工程师标准>>>

直接插入排序
说明:逐个将后一个数加到前面的排好的序中。在直接插入排序过程中,对其中一个记录的插入排序称为一次
排序;直接插入排序是从第二个记录开始进行的,因此,长度为n的记录序列需要进行n-1次排序才能完成整个
序列的排序。时间复杂度为O(n2)。

/*用直接插入法对x[0]-x[n-1]排序*/
void InsertSort(elemtype x[],int n) {
int i,j;
elemtype s;
for(i=0;i<n-1;i++) {
  s=x[i+1];
    j=i;
    while(j>-1&&s.key<x[j].key){
     x[j+1]=x[j];
     j--;
   }
         x[j+1]=s;
}
}

Java 代码实现
public static void main(String[] args) {
int[] a = { 4, 3, 7, 1, 6 };
int use = 0;
int j = 0;
for (int i = 0; i < 4; i++) {
use = a[i + 1];
j = i;
while (j > -1 && use < a[j]) {
a[j + 1] = a[j];
j--;
}
//再每一次排完后,把use放到合适的位置
a[j + 1] = use;
}

for (int i = 0; i < 5; i++) {
System.out.println(a[i]);
}
}
---------------------
希尔排序
说明:希尔排序又称缩小增量排序,增量di可以有各种不同的取法,但最后一次排序时的增量必须为1,最简

单可取di+1=di/2(取小)。时间复杂度为O(n(log2n)2)。

void ShellSort(elemtype x[],int n,intd[],int Number)
/*用希尔排序法对记录x[0]-x[n-1]排序,d为增量值数组*/
/*Number为增量值个数,各组内采用直接插入法排序*/
{
int i,j,k,m,Span;
elemtype s;
for(m=0;m<Number;m++)
{
    Span=d[m];
    for(k=0;k<Span;k++)
    {
     for(i=k;i<n-1;i+=Span)/*这个for之后的是“组内采用直接插入法排序”*/
      {
       s=x[i+Span];
       j=i;
       while(j>-1&&s.key<x[j].key)
       {
         x[j+Span]=x[j];
         j-=Span;
       }
       x[j+Span]=s;
      }
    }
}
}

----------------------------
直接选择排序
说明:每次将后面的最小的找出来插入前面的已排好的序中。同理,具有n个记录的序列要做n-1次排序。
时间复杂度为O(n2)。
void SelectSort(elemtype x[],int n)
/*用直接选择排序法对x[0]-x[n-1]排序*/
{
int i,j,Small;
elemtype Temp;
for(i=0;i<n-1;i++)
{
    Small=i;
    for(j=i+1;j<n;j++)
     if(x[j].key<x[Small].key)
       Small=j;
   
    if(Small!=i)
     {
       Temp=x[i];
       x[i]=x[Small];
       x[Small]=Temp;
     }
}
}
Java代码实现
public static void main(String[] args) {
int[] x = { 4, 3, 7, 1, 6 };
int i, j, Small;
int Temp;
for (i = 0; i < 4; i++) {
Small = i;
for (j = i + 1; j < 5; j++)
if (x[j] < x[Small])
Small = j;

if (Small != i) {
Temp = x[i];
x[i] = x[Small];
x[Small] = Temp;
}
}
for(i = 0; i < 5; i++){
System.out.println(x[i]);
}
}
--------------------------
冒泡排序
说明:两个两个比较,将大的往后移。通过第一次冒泡排序,使得待排序的n个记录中关键字最大的记录排到

了序列的最后一个位置上。然后对序列中前n-1个记录进行第二次冒泡排序。。。对于n个记录的序列,共需进

行n次冒泡排序。时间复杂度为O(n2)。

void BubbleSort(elemtype x[],int n)
/*用冒泡排序法对x[0]-x[n-1]排序*/
{
int i,j,flag=1;
elemtype Temp;
for(i=1;i<n&&flag==1;i++)
{
    flag=0;
    for(j=0;j<n-i;j++)
    {
      if(x[j].key>x[j+1].key)
       {
          flag=1;
          Temp=x[j];
          x[j]=x[j+1];
          x[j+1]=Temp;
       }
    }
}
}
Java代码实现
public static void main(String[] args) {
int[] a = { 4, 3, 7, 1, 6 };
int i, j;
int Temp;
for (i = 1; i < 5 ; i++) {
for (j = 0; j < 5 - i; j++) {
if (a[j] > a[j + 1]) {
Temp = a[j];
a[j] = a[j + 1];
a[j + 1] = Temp;
}
}
}
for (i = 0; i < 5; i++) {
System.out.println(a[i]);
}
}
-----------------------------
快速排序
说明:又叫分区交换排序,是对冒泡排序方法的一种改进。时间复杂度为O(nlog2n)。

void QuickSort(elemtype x[],int low,int high)
/*用递归方法对记录x[0]-x[n-1]进行快速排序*/
{
int i,j;
elemtype Temp;

i=low;
j=high;
Temp=x[low];

while(i<j)
{
    /*在序列的右端扫描*/
    while(i<j&&Temp.key<=x[j].key)j--;
    if(i<j)
    {
      x[i]=x[j];
      i++;
    }

/*在序列的左端扫描*/
    while(i<j&&x[i].key<Temp.key)i++;
    if(i<j)
    {
      x[j]=x[i];
      j--;
    }
}
    x[i]=Temp;

/*对子序列进行快速排序*/
   if(low<i-1)QuickSort(x,low,i-1);
   if(j+1<high)QuickSort(x,j+1,high);
}

-------------------------
归并排序
说明:所谓归并排序就是将两个或两个以上的有序数据序列合并成一个有序数据序列的过程。
时间复杂度为O(nlog2n)。

void merge(r,l,m,h,r1,r2)/*r[l,m]及r[m+1,h]分别有序,归并后置于r2中*/
sqlist r,r2;
int l,m,h;
{
int i,j,k;
k=l;/*k是r2的指示器,i、j分别为s1、s2的指示器*/
i=l;
j=m+1;

while(i<=m&&j<=h)
{
    if(r[i].key<=r[j].key)
     {
        r2[k]=r[i];
        i++;
     }
    else
     {
        r2[k]=r[j];
        j++;
     }
    k++;
}
if(i>m) /*s1结束*/
   while(j<=h)
   {
    r2[k]=r[j];
    j++;k++;
   }
else XML文件解析的4种方式
   while(i<=m)
    {
      r2[k]=r[i];
      i++;k++;
    }
}

转载于:https://my.oschina.net/linuxred/blog/17592

数据结构算法的一些归纳相关推荐

  1. CAUC数据结构与算法期末复习归纳(二)

    CAUC数据结构与算法期末复习归纳(二) 二叉树 二叉树的周游 二叉树的抽象数据类型 深度优先周游二叉树或其子树 广度优先周游二叉树 二叉树的存储结构 二叉树的链式存储结构 二叉搜索树 二叉搜索树的性 ...

  2. 数据结构基础知识核心归纳(一)

    数据结构基础知识核心归纳(一) 转载请声明出处:http://blog.csdn.net/andrexpert/article/details/77900395 Android             ...

  3. 数据结构算法集---C++语言实现

    /// // // // 堆栈数据结构 stack.h // // // /// #include<iostream.h> template<class Type>class ...

  4. 横空出世,席卷Csdn [评微软等公司数据结构+算法面试100题]

    横空出世,席卷Csdn ---评微软数据结构+算法面试100题 作者:July 时间:2010年10月-11月.版权所有,侵权必究. --------------------------------- ...

  5. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

  6. 横空出世,席卷互联网--评微软等公司数据结构+算法面试100题

    横空出世,席卷互联网                                                                          ---评微软数据结构+算法面试1 ...

  7. [整理I]精选微软等公司数据结构+算法面试100题 [第1-40题]

    精选微软等公司,数据结构+算法,经典面试100题                                       --------之前40题 --------------- ------- ...

  8. Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察

    ML岗位面试:10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法.回归算法.聚类算法等细节考察 Interview:算法岗位 ...

  9. [最新答案V0.4版]微软等数据结构+算法面试100题[第41-60题答案]

    [最新答案V0.4版]微软等数据结构+算法面试100题[第41-60题答案] 作者 July.Csdn网友 二零一一年一月四日 ------------------------------------ ...

最新文章

  1. python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?
  2. js中遇到的一个错误Uncaught SyntaxError: missing )after argument list
  3. 《利用python进行数据分析》读书笔记--第十章 时间序列(一)
  4. 我正在运行哪个版本的PostgreSQL?
  5. python可视化界面开发实例-Python可视化界面编程入门
  6. 订单系统需求分析说明
  7. SuperMap iDesktop入门实战-张杰-专题视频课程
  8. fastp manul page
  9. MATLAB——斜抛运动
  10. 数据分析里面的一些常用指标的特点(最大、最小、平均、中位数、....)
  11. SLAM--LSD_SLAM在高版本系统中运行(ubuntu20.04 ROS-noetic)
  12. jsp四大作用域和九大对象
  13. Spring Cloud笔记 中级篇
  14. es ik 多字段查询_SpringBoot使用注解的方式构建Elasticsearch查询语句,实现多条件的复杂查询...
  15. 1W存一年和两个5000存一年,收益有区别吗?
  16. 【Paper】Word2Vec:词嵌入的一枚银弹
  17. MIMICIV中SOFA评分计算(WINDOWS)
  18. 新一代Vue脚手架(create-vue)
  19. 小度路由刷openwrt
  20. Spring Security 集成 Authing CAS 认证(一)

热门文章

  1. POJ 2240 Arbitrage(判正环)
  2. C#反射之Assembly.Load,Assembly.LoadFile 与 Assembly.LoadFrom方法介绍
  3. c#操作mysql数据库
  4. C++/C语言实现HTTP的GET和POST请求
  5. dll文件的c++制作
  6. python对象三个特性_百度资讯搜索_python对象三个特性
  7. C#中创建文件并追加内容和换行
  8. mysql 5.8_mysql5.8安装指南
  9. java实验楼使用说明_Java 方法
  10. 开发pc页面_uniapp支持PC版真正的一统天下来了全端支持不是梦