C++数据结构与算法

1.插入排序

方式:从小到大排序
解释:双层循环,外层循环对应比较的后一个数据元素,保证每一个元素都进行了一次插入,内层循环对应比较的前一个数据元素,并逐个向前对比直到找到前一个元素比后一个小,开始下一轮比较。由此,从data[0]和data[1]开始,外层向后增量,内层向前插入到合适位置,保证有序行。

#include <iostream>

using namespace std;

enum Errcode{
    
    
        sucessful = 0,
        error
};

class insertionSort
{
    
    

public:
        int getData(){
    
    
                size_t num = sizeof(data)/(sizeof(int));
                cout << "num is:" << num  << endl;
                while(num)
                {
    
    
                        cin >> data[--num];
                }
                return sucessful;
        }

        void swap(int* a, int* b)
        {
    
    
                temp = *a;
                *a = *b;
                *b = temp;
        }

        int sort()
        {
    
    
                size_t num = sizeof(data)/sizeof(int);
                for(size_t i = 0; i < num; ++i)
                {
    
    
                        int tmp = i;
                        for(size_t j = i -1; j >= 0; j--,tmp--)
                        {
    
    
                                if(data[j] > data[tmp])
                                {
    
    
                                        swap(&data[tmp], &data[j]);
                                }
                                else
                                        break;
                        }
                }

        }

        void print()
        {
    
    
                size_t num = sizeof(data)/(sizeof(int));
                cout << "from min to max:" << endl;
                for(int i = 0; i < num; i++)
                {
    
    
                        cout << data[i] << "  ";
                }
                cout <<endl;
        }

private:
        int data[10];
        int temp;
};

int main(){
    
    

        insertionSort* insSort = new insertionSort;
        insSort->getData();
        insSort->sort();
        insSort->print();
}

结果:

[root@jn datastructcpp]# ./a.out 
num is:10
3
574
456
5875478
54674

3735
673
636
3563
6364
from min to max:
3  456  574  636  673  3563  3735  6364  54674  5875478  
[root@jn datastructcpp]# 

猜你喜欢

转载自blog.csdn.net/weixin_44328568/article/details/117457172