已经学习Java接近三年的cullinans,回头再看数据结构的一些知识,果然和刚学时不一样,今日记录下自己对这些知识的理解,以便自己不断重复更加深入的理解。
选择排序
package sort;
/**
* @packagname:sort
* @classname:ChooseSort
* @date:2017/1/30
* @author:cullinans
* @des:选择排序
* 选择排序思路:
* 首先将第一个元素标记为最小的元素
* 然后在从第二个元素起找到比第一个元素还小的元素并记录下标
* 然后如果最小的元素的下标和第一个元素的下标不一样,则交换这两个元素。一轮循环结束。
* 后面的元素依次类推,知道最后一个元素循环完毕。
* 关键:选择排序,比较多次,但是只用一个引用记录最小的元素最后只交换一次。
* 时间复杂度:o n的平方。
*/
public class ChooseSort<T> {
public static void sort(int[] sortarray){//传入数组
int min;//标记变量
for(int i=0;i<sortarray.length;i++){//循环数组
min=i;//将第i个元素标记为最小元素
for(int j=i+1;j<sortarray.length;j++){//循环i元素后面的元素
if(sortarray[min]>sortarray[j]){//如果后面的元素有比最小元素还小的
min=j;//将这个元素的下标标记为最小的
}
}
if(i!=min){//如果第i个元素和最小元素的下标不一致
//则交换这两个元素的值。
int temp;
temp=sortarray[i];
sortarray[i]=sortarray[min];
sortarray[min]=temp;
}
}
}
public static void main(String[] args){
int[] a={3,7,2,4,9,5};
sort(a);
for(int i:a){
System.out.println(i);
}
}
}