繁体   English   中英

使用Bubble Up进行冒泡排序

[英]Bubble Sort using Bubble Up

给定冒泡排序的算法:

Algorithm BubbleSort(A[0...n]):
  for i <- 0 to n-2 do
    for j <- 0 to n-2-i do
      if(A[j+1] < A[j] then swap(A[j], A[j+1]))

我必须使用我们将最小元素“冒泡”到列表中第ith个位置的第i个位置来重写Bubble Sort算法。

谁能帮我这个?

#include<stdio.h>
void bubbleSort(int *x,int size)
{
  int e,f,m,g;
  m=size-2;
  while(m>0)
  {
    e=0;
    f=1;
    while(e<=m)
    {
      if(x[f]<x[e])  
      {
        g=x[e];       //swaping
        x[e]=x[f];
        x[f]=g;
      }
    e++;
    f++;   
    }
   m--; 
  } 
}
void main()
{
  int x[10],y;
  for(y=0;y<=9;y++)      //loop to insert 10 numbers into an array
  {
    printf("Enter a number: ");
    scanf("%d",&x[y]);
  }
  bubbleSort(x,10);      //pass number entered by user and size of array to bubbleSort 
  for(y=0;y<=9;y++)     //loop to print sorted numbers
  {
    printf("%d\n",x[y]);
  }
}

当前,您是从头开始遍历数组,因此,如果遇到最大的元素,它将“冒泡”到数组的末尾。 如果要进行相反的操作,即将最小的元素“冒泡”到起点,则需要从终点到起点以相反的方向遍历数组。 希望它能帮助您找到方法。

看来答案还没有被接受。 因此,尝试检查这是否仍然是一个问题。

我认为这可能是Java中可能的实现。 正如@Warlord所提到的,该算法是要确保将要排序的数组想象为一个垂直数组。 每次通过时,我们要做的就是检查下面是否有较大的元素,以及是否发现该元素冒泡到顶部。

    static void bubbleUpSort(int[] arr){
    final int N = arr.length;
    int tmp = 0;
    for (int i=0; i < N; i++){
        for (int j=N-1; j >= i+1; j--){
            if (arr[j] < arr[j-1]){
                tmp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = tmp;
            }
        }
    }

    for (int k =0; k < arr.length; k++){
        System.out.print(arr[k] + " ");
    }
}

从main调用为:

public static void main(String[] args) {
    System.out.println("Bubble Up Sort");
    int[] bUp = {19, 2, 9, 4, 7, 12, 13, 3, 6};
    bubbleUpSort(bUp);
}

气泡排序

将每个与邻居进行比较,如果第一个大于下一个,则交换

function bubbleSort(arr){
  let temp;
  console.log("Input Array");
  console.log(arr);
  for (let i = 0; i < arr.length-1; i++) {
    for (let j = 0; j < arr.length-i-1; j++) {
      if (arr[j] > arr[j+1]) {
        temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
        console.log(arr[j],"swapped with",arr[j+1])
        console.log(arr);
      } else {
        console.log("SKIP");
      }
    }
  }
  console.log("Sorted using Bubble Sort");
  return arr;
}
console.log(bubbleSort([7,6,9,8,2,1,4,3,5]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM