首页 课程 师资 教程 报名

Java算法学习视频之常见的算法有哪些

  • 2020-09-08 15:18:41
  • 2354次 动力节点

编程语言的几种基本算法主要有以下几个:

1、插入排序(直接插入排序、希尔排序)

2、交换排序(冒泡排序、快速排序)

3、选择排序(直接选择排序、堆排序)

4、归并排序

5、分配排序(箱排序、基数排序)

按照条件来使用排序算法:

所需辅助空间最多:归并排序

所需辅助空间最少:堆排序

平均速度最快:快速排序

不稳定:快速排序、希尔排序、堆排序

选择排序算法的时候:

1、数据的规模

2、数据的类型

3、数据已有的顺序

一般来说,当数据规模较小时,应该直接插入排序或冒泡排序。任何排序算法在数据量小时基本体现不出来差距。考虑数据的类型,比如如果全部是正整数,那么考虑使用桶排序最优。考虑数据已有顺序,快速排序是一种不稳定的排序(可以改进),对于大部分排好的数据,快速排序会浪费大量不必要的步骤。数据量极小,而且已经基本排好序,冒泡是最佳选择。我们说快速排序好,是指大量随机数据下,快速排序效果最理想。而不是所有情况。

一、插入排序

1、直接插入排序

讲一个记录插入到已经排好序的有序表中。

①sorted数组的第0个位置没有放数据

②从sorted第二个数据开始处理;如果该数据比它前面的数据要小,说明该数据要往前面移动。

步骤:

a.首先将数据备份放到sorted的第0个位置当哨兵

b.然后将该数据前面那个数据后移

c.然后往前搜索,找到插入位置

d.找到插入位置之后讲,第0个位置的那个数据插入对应位置。

时间复杂度:O(nn),当待排记录序列为正序时,时间复杂度提高至O(n)

Java算法学习视频之常见的算法有哪些

直接插入排序例子java语言实现

public class InsertionSort {
	
	//插入排序: 直接插入排序, 希尔排序
	public static void straighInsertionSort(double[] sorted){
		int length = sorted.length;
		for(int i=2; i=0; j--){
					if(sorted[j] > sorted[0]){
						sorted[j+1] = sorted[j];  //后移一位
					}else{
						insert = j+1;  //插入的位置
						break;
					}
				}
				sorted[insert] = sorted[0];
			}
		}
	}
	
	public static void main(String[] args) {
		Random random = new Random(6);
		int arraySize = 21;
		double[] sorted = new double[arraySize];
		
		System.out.println("排序前:");
		for(int i=1;i

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交