第六节 排序
1.冒泡排序
.原理: 相邻的两个数比较,小的放前面,最大的放后面一次类推, 最大值下次不参与比较
代码结构:
int[] array ={};
for( int i = 0 ; i < array.length - 1 ; i++){ //外部循环进行比较
for( int j = 0 ; j < array.length - 1 - i ;j++){//内部进行元素比较
if( array[j] > array[j+1] ){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
2.插入排序:
原理:在数组中将第一个元素当作有序是的序列,以后拿元素与第一个值进行比较,如果小就交换,不小就不换。
代码结构:
int[] arr = {};
//因为插入排序把第一个数看座有序的序列,所以要从第二个数开始比较
for( int i = 1 ; i < arr.lenngth ; i++){
//判断第二个数是否比第一个数小
if(arr[i] < arr[i-1]){
//如果第二个数比第一个小,将这个数赋值给暂时的一个变量(方便插入)
int temp = arr[i];
//标记这个小的元素的下标
int j = i;
//判断前一个数是否比temp小
while( j > 0 && temp < arr[j-1]){
//小的话前一个数赋值
arr[j] = arr[j-1];
//如果前边还有比这小的继续进行
j--;
}
arr[j] = temp;
}
}
3.选择排序:
原理:经过一次比较将最小的元素的下标位置保存下来与第一个元素进行交换。
代码结构:
int[] arr = {};
//下标为零开始依次选择,找到从他之后的整个数组最小的进行交换
for(int i = 0 ; i < arr.length ; i++){
//把最小的下标赋值给一个最小标指针(方便for循环)
int minIndex = i;
//除了i下标开始进行比较选出最小的下标
for( int j = i+1; j < arr.length ; j++){
//如果比他小就把下标赋值给最小下标指针
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
//交换值
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
未完待续。。。。。。
仅用于个人学习总结