直接选择排序法(注意区分与冒泡排序的区别)

直接选择排序法是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素,注意区分冒泡排序,他不是交换相邻的,而是把满足条件的与指定位置的交换。

比如array{7,8,6,5,9,3,1},指定把最大的放在最后一位,先从第一位开始比较,8比7大,则下一次就是6与8比较(因为6比8小),再5与8比较,以此类推

for(int j=1;ja[index]){
					index=i;
					/*
					 * 交换下一个要比较的值,但不是交换两个值的内容
					 * 比如a2与a1比较,现在换成a3与a2比较,而不是交换a2和a1的值				 
					 */
			
			}
							
	}

到最后一位再交换位置

for(int j=1;ja[index]){
					index=i;
					/*
					 * 交换下一个要比较的值,但不是交换两个值的内容
					 * 比如a2与a1比较,现在换成a3与a2比较,而不是交换a2和a1的值				 
					 */
			
			}
							
	}
			/*
			 * 不能放在第二个for里面,因为要到最后再交换位置
			 */
			temp=a[a.length-j];
			a[a.length-j]=a[index];
			a[index]=temp;	
		}

实现从小到大(大的在最后)的排列顺序

直接选择排序法(注意区分与冒泡排序的区别)_第1张图片

代码如下

public static void main(String[] args) {
		// TODO Auto-generated method stub		
		int a[]=new int[]{7,8,6,5,9,3,1}; 
		int temp;
		
		System.out.println("排序前的数组");
		for(int i=0; ia[index]){
					index=i;
					/*
					 * 交换下一个要比较的值,但不是交换两个值的内容
					 * 比如a2与a1比较,现在换成a3与a2比较,而不是交换a2和a1的值				 
					 */		
			}							
	}
			/*
			 * 不能放在第二个for里面,因为要到最后再交换位置
			 */
			temp=a[a.length-j];
			a[a.length-j]=a[index];
			a[index]=temp;	
		}
		
		
		System.out.println();
		System.out.println("排序后的数组");
		
		for(int i=0;i

你可能感兴趣的:(直接选择排序法(注意区分与冒泡排序的区别))