c++ 使用指针进行冒泡排序,但我也必须使用指针进行遍历

piv4azn7  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(107)

我必须创建一个使用指针的冒泡排序程序,但不是使用i和j来迭代,而是使用指针。

#include<iostream>

使用命名空间std;
int main(){

int size = 6;
int size1 = size;
int arr[] = { 8, 6, 11, 3, 15, 5 };
int* myarr = arr;

int* endptr = myarr + size;
int* endptr2 = myarr + size;


for (myarr; myarr < endptr; myarr++) {
    for (myarr; myarr < endptr2; myarr++){
        if (*myarr > *(myarr + 1)) {
            swap(*myarr, *(myarr + 1));
        }

    }
    endptr2--;
    
    
}

}
第一个循环运行良好,但我无法迭代第二个循环进行冒泡排序。

nmpmafwu

nmpmafwu1#

像这样?

#include <iostream>
#include <vector>

void bubblesort( int arr[], int N ) {
    if ( N<2 ) return;
    for ( int* endptr = &arr[N-1]; endptr>arr; --endptr ) {
        for ( int* p = arr; p<endptr; ++p ) {
            if ( p[0] > p[1] ) {
                std::swap(p[0],p[1]);
            }
        }
    }
}

int main() {
    std::vector<int> values = {10,3,8,1,2,3,7,9};
    bubblesort( values.data(), values.size() );
    for ( int value : values )  {
        std::cout << value << " ";
    }
    std::cout << std::endl;
}

生产
https://godbolt.org/z/56roK56do

相关问题