标签:arr Java int 元素 交换 System 冒泡排序
冒泡排序算法原理
1、从后往前依次比较相邻的元素。若是要按照升序排序,则后面的元素比前面的小,就交换这2个元素;降序则相反。
2、对每一对相邻元素作同样的工作,从第一对到最后一对。进行一轮比较交换下来,最后的元素就会是最小(或最大)的数了,这个数就不用参与后面的比较操作了。
3、针对所有的元素重复以上的步骤。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
为了尽量缩短待排序表的长度,避免下一次扫描中可能出现的不必要的比较,在每次扫描过程中,一方面要记录进行元素交换的次数,另一方面要记住在本次扫描中的最后一次进行交换的位置。在这个位置以后没有发生过交换,则说明在这个位置以后的元素实际上已经排好次序。
总的来说,冒泡法基本思想是重复的进行整个数组的排序,一次比较两个元素(两两排序),如果它们顺序不符合就交换,重复这样直到数列没有再需要交换的数为止(结束条件)。因为它就好像气泡一样,轻的气泡会往上漂浮,在不断漂浮的过程中,发生了两两交换过程,所以叫冒泡排序。
public class Test29 {
public static void main(String[] args) {
int[] arr={1,4,5,7,8,2};
func(arr);
printArr(arr);
}
//打印
private static void printArr(int[] arr) {
System.out.print("[ ");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
System.out.print(arr[i]+" ");
}else{
System.out.print(arr[i]+", ");
}
}
System.out.print("]");
}
private static void func(int[] arr) {
for (int i = 0; i <arr.length ; i++) {
boolean flag=false;
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flag=true;
}
}
//若flag=false,表示此时没有交换位置,已实现冒泡排序
if(flag==false){
break;
}
}
}
}
标签:arr,Java,int,元素,交换,System,冒泡排序 来源: https://blog.csdn.net/m0_62218217/article/details/121569412
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。