八大排序算法学习

一直想找个时间学习下八大排序,就我个人来说,我平常用的最多的也就是冒泡排序,而且我对其它排序算法也没有做一定的研究,处于知道有,但是自己写还真有点写不上来,估计大家应该都比我强吧!所以今天有时间来学习下,特此记录。

概述:

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

一:插入排序

插入排序分:直接插入排序和希尔排序

1、插入排序

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

实现思路:

(1)、将待排序数组的第一个元素作为已排序,然后循环数组与前面已排序的数组进行比较;

(2)、取到第i个未排序的元素,与前面i-1个已排序元素进行比较,如果小于第j个元素,则将元素向后移位;如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。

示意图:


核心算法:

public static void SortByInsert(int a[]){
		for(int i=1;i<a.length;i++){           //第一个元素师有序的
			int temp=a[i];
			for(int j=i-1;j>=0;j--){			//从后向前,找在有序表中的位置:此处也有用while循环
				if(temp<a[j]){
					a[j+1]=a[j];
					a[j]=temp;
				}
			}	
		}
	}
测试例子:

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[]={6,5,3,1,8,7,2,4};
		SortByInsert(a);
		for(int i=0;i<a.length;i++){
			System.out.println(a[i]+"\n");
		}
	}
时间复杂富:O(n²)

2、希尔排序:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值