浅谈两种基本排序
冒泡排序
1.原理:数组数值相邻间的成对比较
2.参考:①a,b,c,d(数值)
a->b比较(不换位置情况下:b->c比较|| 换位置情况下:a->c比较)以此类推
3.推算出比较了n-2次(即从1~n-1)
比较则是从0-n-次数(每次循环筛选出一个最数)
简单示例代码 |
---|
//int[] a={1,7,2,4,9,3};
// 初始:1 7 2 4 9 3
// 一轮:
// 1 7 2 4 9 3
// 1 2 7 4 9 3
// 1 2 4 7 9 3
// 1 2 4 7 9 3
// 1 2 4 7 3 9 9
// 二轮:
// 1 2 4 7 3
// 1 2 4 7 3
// .....
//结论,一轮筛选出一个最大数,下一轮少循环以此
//必须有一个变量来定义循环次数,且从一递增
public static void main(String[] args) {
int[] a={1,7,2,4,9,3,0};
for(int j=1;j<a.length;j++) {
for (int i = 0; i < a.length-j; i++) {
if(a[i]>a[i+1]){
int t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" || ");
}
}
选择排序
原理:取一个固定值(我们通常选择数组中的元素值)与后面的值进行逐一比较,当且当遇到一个数符合我们的要修(>或<)则互换两者值,去新值与剩下的后面值接着意义比较(符合标准,重复上步骤),以此类推。
示例代码 |
---|
int[] a1={1,7,2,9,3,0};
for(int i=0;i<a1.length-1;i++){//取出每次用于比较位置的数
for(int j=i+1;j<a1.length;j++){
//取出被比较的数
if(a1[i]>a1[j]){
int t=a1[i];
a1[i]=a1[j];
a1[j]=t;
}
}
}
for(int i=0;i<a1.length;i++){
System.out.print(a1[i]+"~~~~~~");
}
java函数直接实现排序(升序)
int b[]={1,4,2,6};
java.util.Arrays.sort(b);
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}