快速排序算法实现(二维数组)
Posted 懒人的记录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序算法实现(二维数组)相关的知识,希望对你有一定的参考价值。
上一篇文章写了快速排序算法的实现,但是是基于一维数组的,为了提高一下自我,这次我们在二维数组上实现下快速排序,整体的排序思想是一样的,唯一不同的地方就是在交互数据的时候需要多做一步,需要将整行数据全部交换
代码实现
更新后的二维数组排序函数
//接收参数增加了一个行数
//通过数组指针指向二维数组
void quickSort(int (*a)[4], int p ,int row, int r) {
if (p >= r){
return;
}
int column = sizeof(a[0])/sizeof(a[0][0]);
int i = p;
int j = 0;
int pivot = r; //分区点
for ( j = p; j <= r - 1; j++){
if (a[j][0] < a[pivot][0]) {
int t = a[i][0];
a[i][0] = a[j][0];
a[j][0] = t;
//交换完i的值之后,还需要将这一行对应的数据同样也交换了
for (int k = 1; k < column; k++) {
int t = a[i][k];
a[i][k] = a[j][k];
a[j][k] = t;
}
i++;
}
}
int t = a[i][0];
a[i][0] = a[r][0];
a[r][0] = t;
//交换完i的值之后,还需要将这一行对应的数据同样也交换了
for (int k = 1; k < column; k++) {
int t = a[i][k];
a[i][k] = a[r][k];
a[r][k] = t;
}
quickSort(a, p, row,i-1);
quickSort(a, i+1,row, r);
}
main函数:
int main(){
int b [][4] {{6,3,1,4}, {1,4,2,5}, {3,5,4,6}};
int row = sizeof(b)/sizeof(b[0]);
int column = sizeof(b[0])/sizeof(b[0][0]);
int r = row - 1;
cout << "排序之前二维数组:" << endl;
for (int i = 0; i < row; i++){
for (int j = 0; j< column; j++){
cout << b[i][j] ;
}
cout << endl;
}
quickSort(b, 0, row, r);
cout << "排序之后二维数组:" << endl;
for (int i = 0; i < row; i++){
for (int j = 0; j< column; j++){
cout << b[i][j] ;
}
cout << endl;
}
return 0;
}
以上是关于快速排序算法实现(二维数组)的主要内容,如果未能解决你的问题,请参考以下文章