【程序】排序(直接法与冒泡法)

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int findSmallest(int array[], int i,int j);
 5 void sort(int array[],int i);
 6 void swap(int array[], int i,int j);
 7 void displayArray(int array[], int i);
 8 
 9 const int SIZE = 6;
10 
11 int main()
12 {
13     int array[SIZE];
14     for (int i = 0;i < SIZE;i++)
15     {
16         cout << "enter value:";
17         cin >> array[i];
18     }
19     cout << "original array:   ";
20     displayArray(array,SIZE);                               //展示输入的数据
21 
22     sort(array,SIZE);                                       //排序
23 
24     cout << "sorted array:   ";
25     displayArray(array, SIZE);
26 
27     cin.ignore();
28     cin.get();
29     return 0;
30 }
31 //***************************************************
32 void displayArray(int array[], int SIZE)
33 {
34     for (int i = 0;i < SIZE;i++)
35     {
36         cout << array[i] << " ";
37     }
38     cout << endl;
39 }
40 //***************************************************
41 void sort(int array[], int SIZE)
42 {
43     for (int i = 0;i<SIZE;i++)                                //遍历数组的序号
44     {
45         int index = findSmallest(array,i,SIZE);
46         swap(array,i,index);                                   //此处的i代表当前进行到的数组号
47     }
48 }
49 
50 //***************************************************
51 //查找最小的数组元素序号
52 int findSmallest(int array[], int currentOne,int size)
53 {
54     int smallest = currentOne;
55     for (int i=currentOne+1;i<size;i++)
56     {
57         if (array[i]<array[smallest])
58         {
59             smallest = i;
60         }
61         
62     }
63     //return 0;
64     return smallest;
65 }
66 
67 //***************************************************
68 //实现互换次序
69 void swap(int array[], int current, int indexSmall)
70 {
71     int temp = array[current];
72     array[current] = array[indexSmall];
73     array[indexSmall] = temp;
74 }

贯彻“算法+化整为零”,逐步调试

占位符的问题:void----------return;

int---------return0;

bool------return true/false;

程序运行结果:

enter value:4
enter value:33
enter value:556
enter value:26
enter value:212
enter value:55
original array: 4 33 556 26 212 55
sorted array: 4 26 33 55 212 556

 

 

冒泡法:

 1 //冒泡法排序
 2 #include <iostream>
 3 #include <iomanip>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int a[] = { 4 ,33, 556, 26, 212, 55,0 };
 9     int i, j, tmp;
10     bool flag;//记录一趟起泡中有没有发生过交换
11 
12     for (i = 1;i < 7;++i)//控制总的起泡过程
13     {
14         flag = false;
15         for(j=0;j<7-i;++j)//一次起泡
16             if (a[j + 1] < a[j])
17             {
18                 tmp = a[j];
19                 a[j] = a[j + 1];
20                 a[j + 1] = tmp;
21                 flag = true;
22             }
23         if (!flag) break;
24     }
25 
26     cout << endl;
27     for (i = 0;i < 7;++i)
28         cout << a[i] << " ";
29 
30     cin.get();
31     return 0;
32 }


0 4 26 33 55 212 556

posted @ 2017-06-20 14:22  sky_lover  阅读(220)  评论(0编辑  收藏  举报