排序的意义:
所谓排序是将一组数据依照一定的顺序排列起来
最常见的排序是“从小到大”的“递增排序”和“从大到小的递减排序
排序的特性:
稳定性:
排序过后能直接使相同的数据保持顺序中的相对位置
”不稳定性
排序过后不能使值相同的数据保持原顺序中的相对位置
排序的分类:
外部排序:欲处理的数据量过于庞大,无法全部存放到内部存储器,必须借助外部的辅助存储器
如(硬盘)由于数据存放在外存中,故数据不可随机被存取
合并排序法
直接合并排序法
内部排序:将预处理的数据整个存放到内部存储器中排序数据可被随机存取
交换式排序
选择式排序
插入式排序
交换式排序:运用数据值比较后,以判断规则对数据位置进行交换,已达到排序的目的
冒泡排序法:
从数组的第一个元素开始将第一个元素a[i]同下一个元素a[i+1]进行比较,
如果a[i]大于a[i+1]则将俩者进行交换
直到比较完最后一个元素这时数组中最小的元素会被交换成为数组的前端
快速排序法
在末尾的数组中任选一个记录作为基准,将数组分为左右倆个较小的子数组
左边的数组元素都是小于基准右边的数组都是大于基准,而该基准则位于正确的位置上
然后将俩个子数组再使用递归进行分解,这样不断的分解最后得到正确的排序
冒泡排序:
缺点:
会反复扫描数据,比较相邻的俩个数据,速度也不够快也没有效率
优点:
若数据已有部分排好序,则可以很快的完成排序
冒泡排序:
缺点:
会反复扫描数据,比较相邻的俩个数据,速度也不够快也没有效率
优点:
若数据已有部分排好序,则可以很快的完成排序
package Sort;
public class BubbleSort {
int[]a;
public BubbleSort() {
a=new int[] {8,19,2,3,100,99,1000,888,-1,0};
}
public BubbleSort(int[] a) {
this.a=a;
}
//冒泡排序
public void sort() {
//外循环控制语句
for(int i=0;i<a.length-1;i++) {
//内循环控制的次数
System.out.println("遍历第"+(i+1)+"此的结果");
for(int j=0;j<a.length-i-1;j++) {
if(a[j]>a[j+1]) {
a[j]=a[j]^a[j+1];
a[j+1]=a[j]^a[j+1];
a[j]=a[j]^a[j+1];
}
}
print();
}
}
//遍历
public void print() {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+"\t");;
}
System.out.println("");
}
//Ffor-Each遍历
public void disPaly() {
for(int num:a) {
System.out.print(num+"\t");
}
}
public static void main(String[] args) {
int[] a=new int[] {9,8,7,6,5,4,3,2,1,-1};
BubbleSort sort = new BubbleSort(a);
System.out.println("初始的结果");
sort.print();
long start = System.currentTimeMillis();
sort.sort();
long end = System.currentTimeMillis();
System.out.println("该排序运行的时间是"+(end-start));
System.out.println("排序后的结果");
// sort.print();
sort.disPaly();
}
}