栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

八大排序算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

八大排序算法

目录

1.问题描述

2.问题分析

3.代码编写

4.总结


1.问题描述

1.冒泡排序

2.快速排序

3.直接插入排序

4.折半插入排序

5.希尔排序

6.简单选择排序

2.问题分析

1.冒泡排序主体思想:往前冒泡,第一次把最小的数放在第一个位置,调用交换方法,用布尔变量标识是否进行交换。

2.快速排序:分治递归,选一个关键字,通过一趟排序将待排序列分割成两部分。之后分别对这两部分记录继续进行排序,直到有序。

3.直接插入排序:将一个记录插入到已经排好序的有序表中,右边无序序列不变动,每次将一个数插到左边

4.折半插入排序(优化直插):在有序表中使用折半查找,当low>high时折半查找停止,应将【low,i-1】内元素全部右移,并将A【0】复制到low所指位置

5.希尔排序:先追求表中元素部分有序,再逐渐逼近全局有序,设置增量d,对各子表分别进行直接插入排序,再缩小d,重复过程

6.简单选择排序:第一次先从所有里面选最出小的数,和第一个位置交换;第二次从2——n中选出 最小的,和第二个位置交换;共有(数组-1次)排序(左边有序数列不变动)

3.代码编写
1.冒泡排序

Void  BubbleSort(int A[], int n){

     For(int  i=0;ii; j--)  //数组n-1号是最后一个数

            If(A[j-1] >A[j] ){

               Swap(A[j-1], A[j]);

               Flag=true;

}

            If(flag==false)

               Return;

}

}

Void  swap(int &a, int &b){

       Int   temp=a;

        a=b;

       b=temp;

}
2.快速排序
int  partition(int A[],int low,int high){
       int pivot=A[low];//第一个元素作为枢轴
       while(low=pivot)
              {--high;}//直到low=pivot)
              {++low;}
              A[high]=A[low];
       }
       A[low]=pivot;//枢轴元素放在最终位置
       return low;//返回存放枢轴的最终位置,后面会传给pivotops
}
void  QuickSort(int A[],int low,int high){
       if (low 
3.直接插入排序
void InsertSort(int A[],int n){
       //n为数组元素个数
       int  i,j,temp;//i指向当前需要插入的元素的位置
       for (i=1; itemp; --j) {
              //倒序检查前面的有序元素
                  A[j+1]=A[j];//所有比他大的都右移一位
              }
            A[j+1]=temp;
            }//一轮结束
}
4.折半插入排序
void InsertSort(int A[],int n){
       //n为数组元素个数
       int  i,j,low,high,mid;//i指向当前需要插入元素的位置
       for (i=2; iA[0]) 
                  {high=mid-1;}//查左子表
                 else { low=mid+1; }//查右子表
              }
                for (j=i-1; j>high+1; --j){
                 //统一后移元素,空出位置
                 A[j+1]=A[j];
                 }
             A[high+1]=A[0];//插入操作
           }
       
}
5.希尔排序
void shellSort(int A[],int n){
       int d,i,j;//d为初始增量
       //A[0]是暂存单元,当j小于0时,插入位置已到

       for (d=n/2; d>=1; d=d/2) //步长变化,一共多少趟(设d=4)
          for (i=d+1; i<=n; ++i) 

       //数组从1号位有数,0号位空着
       //i的初值为子表的第二个元素(i=5)
             if (A[i]0&&A[0]
6.简单选择排序
void SelectSort(int A[],int n){
       for(int i=0;i 

4.总结

八大排序还剩下堆排序和归并排序,下次再写

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号