算法学习(一)---冒泡排序

package com.tw.ds.sort;


/**
 *<p>java数据结构之:冒泡排序方法
 *冒泡排序算法的一般性策略:搜索整个值列,比较相邻元素,如果两者的相对次序不对,则交换它们,
 *   其结果是最大值“想水泡一样”移动到值列的最后一个位置上,
 *   这也是它在最终完成排序的值列中合适的位置。然后再次搜索值列,
 *    将第二大的值移动至倒数第二个位置上,重复该过程,直至将所有元素移动到正确的位置上.
 *</p>
 * @author tangw 2010-11-22
 *
 */
public class BubbleSortMain {
    //主方法
	public static void main(String[] args) {
		//定义数组
		int[] items = {2,5,1,4,6,100,11,4};
		//排序
		sort(items);
		//循环输出
		for(int i=0;i<items.length;i++){
			System.out.println("---i="+i+"   value="+items[i]);
			
		}
	}//end method main
	
	//排序
	public static void sort(int[] arItems){
		int temp;
		for(int i=0;i<arItems.length;++i){
			for(int j=0;j<arItems.length-i-1;++j){
			     if(arItems[j] > arItems[j + 1]){
			    	 temp = arItems[j];
			    	 arItems[j] = arItems[j+1];
			    	 arItems[j+1]=temp;
			     }
			}
		}
	}// end method sort

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 下面是一个 C 语言实现的冒泡排序算法: ``` void bubble_sort(int arr[], int n) { int i, j; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 交换 arr[j] 和 arr[j+1] 的值 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } ``` 在这个算法中,数组 arr 被重复地遍历,并且相邻的两个元素比较它们的大小。如果它们的顺序错误,就交换它们的值。这个过程重复进行直到没有再需要交换为止。 这个算法的时间复杂度是 O(n^2),因此它并不是一个很高效的排序算法。但是它非常简单易懂,因此常常被用作一个基础排序算法学习和练习。 ### 回答2: 冒泡排序是一种简单直观的排序算法。它重复地走访过要排序的序列,一次比较两个元素,如果它们的顺序错误就交换位置,直到没有再需要交换的元素为止。下面是一个冒泡排序算法的实现方法: 首先,我们要传入一个待排序的列表。 接下来,设置一个标志位is_sorted,用来表示当前列表是否已经排好序。初始时,is_sorted为False。 然后,我们通过一个while循环,不断地进行迭代直到列表已经排好序。每次循环开始时,将is_sorted重新设置为True。 在每次循环中,我们需要从第一个元素开始,依次比较相邻的两个元素,如果它们的顺序错误就进行交换,并将is_sorted设置为False。这样一次完整的循环下来,最大的元素就会被交换到列表的最后一个位置。 循环结束后,我们再次检查is_sorted的值,如果为True则表示列表已经排好序,否则需要继续进行下一轮循环。 最后,我们返回已经排好序的列表。 下面是该算法的Python实现: def bubble_sort(arr): n = len(arr) is_sorted = False while not is_sorted: is_sorted = True for i in range(1, n): if arr[i] < arr[i-1]: arr[i], arr[i-1] = arr[i-1], arr[i] is_sorted = False n -= 1 return arr 这段代码的时间复杂度为O(n^2),其中n表示待排序列表的长度。 希望对你有帮助! ### 回答3: 冒泡排序是一种简单的排序算法,它重复地遍历要排序的元素,比较相邻两个元素的大小,并交换它们的位置,直到整个序列按照升序排列。 下面是一个使用Python编写的冒泡排序算法的示例: ```python def bubble_sort(arr): n = len(arr) for i in range(n-1): # 每次循环将最大的元素移到末尾 for j in range(n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr ``` 上述代码中,我们首先定义了一个名为`bubble_sort`的函数,它接受一个数组作为参数。在函数中,我们使用了两个嵌套的循环。外层循环`for i in range(n-1)`用于控制排序的次数,其中`n`是数组的长度。内层循环`for j in range(n-i-1)`用于比较相邻两个元素的大小,并在必要时交换它们的位置。通过这样的方式,每次循环都可以将最大的元素移到末尾。最后,函数返回排序后的数组。 例如,如果我们调用`bubble_sort([5, 2, 9, 1, 3])`,那么函数将返回`[1, 2, 3, 5, 9]`,表示按照升序排列的结果。 冒泡排序算法的时间复杂度是$O(n^2)$,其中$n$是数组的长度。虽然它的排序效率较低,但由于其实现简单,适用于小规模的排序任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值