#include <iostream>
#include <ctime>
#define M 10
using namespace std;
void printArray(int *p, int len){
    cout<< "[";
    for (int i = 0; i < len; i++) {
        if (i == len - 1)
            cout<< *(p+i)<< "]" <<endl;
        else
            cout<< *(p+i)<< ", ";
    }

}
void generateArray(int *arr, int min, int max, int n){

    srand((unsigned int) time(NULL));
    for (int i = 0; i < n; i++) {
        int num = rand() % (max-min+1)+ min;
        arr[i] = num;
    }
}
void bubbleSort(int *p, int len){
    for (int i = 0; i < len; i++) {
        for (int j = len - 1; j - 1 >= 0; j--) {
//            if (p[j - 1] > p[j]){
//                int temp = p[j - 1];
//                p[j - 1] = p[j];
//                p[j] = temp;
//            }
            if (*(p+j-1) >*(p+j)){
                int temp = *(p+j);
                *(p+j) = *(p+j-1);
                *(p+j-1) = temp;
            }
        }
    }
}
/**
void selectSort(int *arr, int len){
    for (int i = 0; i < len; i++) {
        int minIndex = i;
        for (int j = i; j < len; j++) {
            if (arr[minIndex] > arr[j])
                minIndex = j;
        }
        if (minIndex != i){
            int temp = arr[i];
            arr[i]= arr[minIndex];
            arr[minIndex] = temp;
        }
    }

}
 */
void selectSort(int *p,int len){
//    int *i, *j, *min, temp;
//    for (i = p; i < p+len-1; i++) {
//        min = i;
//        for (j = i + 1; j < p+len; j++) {
//            if (*(j) < *(min))
//                min = j;
//        }
//        // 交换
//        if (min!=i){
//            temp = *i;
//            *i = *min;
//            *min=temp;
//        }
//    }
   for (int i = 0; i < len; ++i) {
    int minIndex = i;
    for (int j = i; j < len; ++j) {
        if (*(p+minIndex) > *(p+j)){
            minIndex = j;
//            cout<< "minindex = "<< minIndex <<endl;
        }
    }
    int temp = *(p+minIndex);
    *(p+minIndex) = *(p+i);
    *(p+i) = temp;

//    cout<< "=========" <<endl;
}

}


void insertSort(int *p, int len){
//    for (int i = 1; i < len; ++i) {
//        for (int j = i; j > 0; --j) {
//            if (arr[j-1] > arr[j]){
//                int temp = arr[j-1];
//                arr[j-1] = arr[j];
//                arr[j] = temp;
//            }else{
//                break;
//            }
//        }
//    }
    int *i,*j,temp;
    for ( i = p + 1; i < p+len; ++i) {
        for ( j = i; j > p; --j) {
        if (*(j)<*(j-1)) {
            temp = *(j);
            *(j) = *(j - 1);
            *(j - 1) = temp;
        }else{
            break;
        }
    }
}



}

int main (){
    int arr[M];
    generateArray(arr, 20, 100, M);
    printArray(arr, M);
//    bubbleSort(arr, M);
//    selectSort(arr, M);
    insertSort(arr, M);
    printArray(arr, M);

    return 0;
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐