排序查找
2018-04-28 本文已影响14人
范小白Van
冒泡排序法
class Bubble
{
public void sort(int[] arr)
{
int temp=0;
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
//another method
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
基本思想:
- 一个数组从头开始两两比较,大的数往前移动一个位置,这样一轮比较之后,数组的最后一个元素为该数组的最大值;
- 不考虑当前数组的最大值,将数组长度减一,再从头开始两两进行比较,循环之后得到数组中第二个最大的元素;
- 数组再减1,开始循环,得到第三个最大的元素。重复循环,最终得到一个从小到大排列的数组。
选择排序
class Select
{
public void sort(int[] arr)
{
int temp=0;
for(int i=0;i<arr.length-1;i++)
{
int minValue=arr[i];
int minIndex=i;
//find the index of the minimum value
for(int j=i;j<arr.length;j++)
{
if(minValue>arr[j])
{
minValue=arr[j];
minIndex=j;
}
}
//put the minimum value into the arr[i]
temp=arr[i];
arr[i]=minValue;
arr[minIndex]=temp;
}
}
}
基本思想:
- 将数组最前面的一个元素设为最小的元素;
- 不断和后面的元素比较,如果小于最小值,那么交换值和下标(取得最小值和下标);
- 将最小值放入最前面的元素,最终得到一个从小到大的数组。