java数据结构学习(一)之 排序算法
一、插入排序
public void insertionSort(){
int in,out;
for(out=1;out<nElems;out++){
long temp=a[out];
in=out;
while(in>0 && a[in-1]>=temp){
a[in]=a[in-1];
in--;
}
a[in]=temp;
}
}
时间复杂度为O(n2),交换次数减少
在外层的For循环中,Out变量从1开始,向右移动。它标记了未排序部分的最左端的数据。而在内层的While循环中,In变量从Out变量开始,向左移动,直到Temp变量小于In所指的数组数据项,或者它已经不能再往左移动为止。Whild循环的每一趟都向右移动了一个已排序的数据项。
二、选择排序
public void selectionSort(){
int out,in,min;
for(out=0;out<nElems;out++){
min=out;
for(in=out+1;in<nElems;in++)
if(a[in]<a[min])
min=in;
swap(out,min);//交换数组a[out]和a[min]
}
}
时间复杂度为O(n2)