公共代码交换两个数的方法:
/**
* 交换两个数的方法
* @param data 交换的数组
* @param i 位置i的数组下标
* @param j 位置j的数组下标
*/
public static void swap(int[] data, int i,int j){
// 当只有是不同一位置的两个数才进行交换
if(i!=j){
int temp = 0;
temp = data[j];
data[j] = data[i];
data[i] = temp;
}
}
1.插入排序:
思想:每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。
代码实现:
/**
* 插入排序算法
* 每进行一次排序,就需要将要比较的数与有序的序列进行一一对比
* @param data
* @param n
*/
public static void insertion(int[] data, int n){
for(int i = 0 ; i < data.length;i++){
for(int j = 0 ; j<i;j++){
if(data[i]<data[j]){
swap(data,i,j);
}
}
System.out.println("第"+i+"趟:"+Arrays.toString(data));
}
}
2.选择排序:
思路简单:每经过一趟比较就找出一个最小值,与待排序列最前面的位置互换即可。
——首先,在n个记录中选择最小者放到r[1]位置;然后,从剩余的n-1个记录中选择最小者放到r[2]位置;…如此进行下去,直到全部有序为止。
优点:实现简单
缺点:每趟只能确定一个元素,表长为n时需要n-1趟
前提:顺序存储结构
/**
* 选择排序算法
* 每经过一趟比较就找出一个最小值,与待排序列最前面的位置互换即可
* @param data
* @param n
*/
public static void select(int[] data, int n){
for(int i = 0 ; i < data.length; i++){
int min = i;
for (int j = i+1; j<data.length; j++){
if(data[j]<data[min]){
min = j;
}
}
if(i!=min){
swap(data,min,i);
}
System.out.println("第"+i+"趟:"+Arrays.toString(data));
}
}
冒泡排序:
基本思路:每趟不断将记录两两比较,并按“前小后大”(或“前大后小”)规则交换。(逆序则交换)
优点:每趟结束时,不仅能挤出一个最大值到最后面位置,还能同时部分理顺其他元素;一旦下趟没有交换发生,还可以提前结束排序。
前提:顺序存储结构
/**
* 冒泡排序算法
* 每次都是进行相邻两个数的比较,每比较一次,比较的个数就变少一个
* @param data
* @param n
*/
public static void bubble(int[] data, int n){
for(int i = 1; i <=data.length; i++){
for(int j = 0; j<(data.length-i);j++){
if(data[j]>data[j+1]){
swap(data,j,j+1);
}
}
System.out.println("第"+i+"趟:"+Arrays.toString(data));
}
}
分享到:
相关推荐
插入排序 冒泡排序 堆排序 基数排序 选择排序 快速排序的源码 java实现
交换排序 选择排序 冒泡排序 插入排序
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
java插入冒泡选择三大排序java插入冒泡选择三大排序java插入冒泡选择三大排序java插入冒泡选择三大排序java插入冒泡选择三大排序java插入冒泡选择三大排序
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
采用c++描述了各种排序算法,包括选择排序 冒泡排序 插入排序 基数排序 快速排序 归并排序 。实验内容 1、创建排序类。 2、提供操作:选择排序、冒泡排序、插入排序、*基数排序、*快速排序、*归并排序。 3、*能够...
直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码 使用C#实现的数据结构中的排序算法
21、折半插入排序 22、21、折半插入排序 22、冒泡排序 21、折半插入排序 22、冒泡排序 23、快速排序 21、折半插入排序 22、冒泡排序 23、快速排序 24、简单选择排序 21、折半插入排序 22、冒泡排序 23、快速排序 24...
用java实现了以下算法: 1、冒泡排序、冒泡排序的两种改进。 2、插入排序。 3、选择排序。 4、希尔排序。 5、归并排序。 6、快速排序。
插入排序,选择排序,基数排序,冒泡排序的C++实现
有一个模板类写出了快速排序,冒泡排序,插入排序,选择排序四种算法。用的是C++哦
选择排序和冒泡排序想必大家都很熟悉,但插入排序一般新手却很难理解,插入排序的Java源代码
详细介绍选择排序、冒泡排序、插入排序且有相应的代码分析
C# 常用经典算法,选择排序 冒泡排序 快速排序 插入排序 希尔排序
用java语言实现冒泡排序、插入排序、堆排序、快速排序、归并排序、希尔排序、桶排序,并且对各种排序算法进行性能的比较。
关于c#的一些算法 选择排序 冒泡排序 快速排序 插入排序 希尔排序 归并排序 基数排序 计数排序。。。
C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
JAVA排序大全 冒泡 快速 选择 归并排序