练习5-冒泡排序

题目

编写程序,从键盘上任意接收10个整数存入一维数组中(无序),利用冒泡排序将该数组元素由小到大进行排序,并输出排序后数组。

解题步骤

(1)建立用于存放数据的一维数组;
(2)接收用户输入;
(3)冒泡排序;
(4)输出结果;

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;

public class Demo {
public static void main(String[] args) {
Scanner user = new Scanner(System.in);
int[] array = new int[10];
int i, j, temp;
System.out.println("please enter 10 integers:");
for (i = 0; i < 10; i++) {
array[i] = user.nextInt();
}
for (i = 0; i < 9; i++)
for (j = 0; j < 9 - i; j++)
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
System.out.print("data from small to large:");
for (i = 0; i < 10; i++) {
System.out.format("%d ", array[i]);
}
}
}

C语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main()
{
int array[10], i, j, temp;
printf("please enter 10 integers:");
for (i = 0; i < 10; i++)
{
scanf("%d", &array[i]);
}
for (i = 0; i < 9; i++)
for (j = 0; j < 9 - i; j++)
if (array[j] > array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
printf("data from small to large:");
for (i = 0; i < 10; i++)
{
printf("%d ", array[i]);
}
return 0;
}

说明

Bubble Sort介绍:

  1. 冒泡排序是一种简单直观的排序算法。通过”重复性地比较需要排序的数列,一次比较两个元素,若顺序错则交换”的方法完成排序。
  2. 算法步骤:
    (1)比较相邻位置的两个元素,若前者大于后者,则交换顺序;
    (2)重复步骤一,对所有数据遍历走访,此时,末尾元素最大;
    (3)对除末尾元素外的其他元素重复以上操作;
    (4)上述步骤重复次数逐渐减少,直到没有任何数据需要进行比较;

核心:

1
2
3
4
5
6
7
8
for (i = 0; i < N - 1; i++)         //i控制比较趟数
for (j = 0; j < N - 1 - i; j++) //j控制每趟比较次数
if (a[j] > a[j + 1]) //根据实际情况从大到小或从小到大输出,此处为从小到大
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}