在java中,数据分为基本数据和引用型数据(也就是用new关键字创建的),java对这两种数据的传递的方式是不一样的,对于基本数据是传值而对于引用型数据则传递的是数据的引用.
一个整形的数组我们用冒泡排序法进行排序,以下是两种示例代码:
第一种:
public class BubbleSort {
public static void main(String[] args) {
int[] arr ={4,6,2,7,3,1,5,8};
int n = arr.length;
for(int i = 0; i < n;i++) {
for(int j = 0; j < n-1-i;j++) {
if(arr[j]>arr[j+1]) {
swap(arr,j,j+1);
}
}
}
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
}
public static void swap(int[] arr, int i,int j) {
int term = arr[i];
arr[i] = arr[j];
arr[j] = term;
}
}
第二种:
public class BubbleSort {
public static void main(String[] args) {
int[] arr ={4,6,2,7,3,1,5,8};
int n = arr.length;
for(int i = 0; i < n;i++) {
for(int j = 0; j < n-1-i;j++) {
if(arr[j]>arr[j+1]) {
swap(arr[j],arr[j+1]);
}
}
}
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
}
public static void swap(int i,int j) {
int term = i;
i = j;
j = term;
}
}
经过测试我们发现第一种方法正确,而第二种的结果不是我们想要的.经过代码的分析我们发现两者的唯一区别是交换方法不一样.
第二种的swap方法中传入的是两个基本数据,而第一种则传入了数组,这个引用型的数据.也就是说,第二种传入的是数据的值,把原来的值复制了一份给了swap,而当这个访求结束后,虽然发生了交换,但不是原来的数据发生了交换,而是其复制品.而第一种传入了数组,由于数组是一个引用型的变量.它传给swap方法的是数组的引用,而不是具体的值,这样它与原来的引用都是指向heap里的同一个数据,因此对这个引用的操作会直接影响到原来的数据.因此第一种会出现我们想要的结果.
- 大小: 9.1 KB
分享到:
相关推荐
冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python...
### Java冒泡排序算法知识点详解 #### 一、冒泡排序基本概念 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是...
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。 走访元素的工作是重复...
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
在计算机科学中,排序算法是数据结构领域的重要组成部分,它用于对一组数据进行有序排列。这里我们关注的是两种基础的排序算法:选择排序(Selection Sort)和冒泡排序(Bubble Sort),它们都是简单直观的算法,...
数据结构冒泡排序算法 数据结构冒泡排序算法
根据给定的信息,我们可以深入探讨冒泡排序算法及其在Java中的实现细节。冒泡排序是一种简单的排序算法,它重复地遍历...此外,在某些特定场景下,比如接近有序的数据集上,冒泡排序的表现可能会优于更复杂的排序算法。
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...
选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 每种排序算法根据其应用场景,数据的大小、...
在实际应用中,冒泡排序算法的C++函数模板可以在许多领域中发挥重要作用,例如数据分析、科学计算、机器学习等。在这些领域中,快速、高效的排序算法可以大大提高计算速度和降低计算成本。 冒泡排序算法的C++函数...
用 Java 实现冒泡排序算法 冒泡排序是一种简单的排序算法,它的基本思想是通过反复比较和交换相邻元素的位置来实现排序。下面是用 Java 实现冒泡排序算法的详细解释: 1. 排序方法 冒泡排序的排序方法是将被排序...
冒泡排序是一种基础且经典的排序算法,它通过不断交换相邻元素来逐步将序列中的最大(或最小)元素“冒泡”到序列的末尾。在Java编程语言中,我们可以使用循环和条件语句来实现这一过程。下面我们将详细介绍如何用...
冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1),是一种简单、易于实现的排序算法,但是对于大规模数据排序效率不高。 在JAVA实现中,我们可以使用以下步骤来实现冒泡排序: 1. 定义一个待排序的数组:int[] ...
冒泡排序是一种简单的排序算法,通过重复遍历要排序的列表,比较每对相邻的元素,并交换它们的位置(如果顺序错误的话),直到没有任何一对数字需要交换为止。 **示例代码分析**: ```java class Sort { String ...
### JAVA冒泡排序算法详解 冒泡排序是一种简单的排序算法,它重复地遍历要排序的元素列表,比较每对相邻...然而,对于教学目的或者处理小型数据集时,冒泡排序仍然是一个很好的示例,可以帮助理解排序算法的基本原理。
在编程领域,排序算法是数据结构与算法学习中的基础部分,尤其在JAVA中,掌握不同的排序算法对于提高程序效率至关重要。本节将深入探讨两种常见的排序算法:冒泡排序和快速排序。 首先,我们来详细讲解冒泡排序。...
冒泡排序是一种基础且经典的排序算法,主要应用于计算机科学领域,特别是在编程语言如Java中。它的名字来源于排序过程中较小的元素像气泡一样逐渐“浮”到数组或列表的顶端。这个PPT文档很可能是详细介绍了Java实现...
冒泡排序是一种基础的排序算法,它通过重复遍历待排序的序列,比较相邻元素并交换位置,使得每个元素都能“浮”到它应该在的位置上。在这个Java GUI实现的冒泡排序项目中,我们利用了NetBeans工具来设计用户界面,使...
冒泡排序是一种简单的排序算法,它的基本思想是通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这...