编写程序,用冒泡法和指针两种方式对10个数进行排序
初学c语言,希望能给点建议
冒泡和指针不矛盾啊。
#include <iostream>
using namespace std;
void bubbleSort(int *arr, int n){
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(arr[j]>arr[j+1]){
swap(arr[j],arr[j+1]);
}
}
}
}
int main()
{
int arr[10]={10,9,8,7,6,5,4,3,2,1};
bubbleSort(arr,10);
cout<<"排序后的结果为:";
for(int i=0;i<10;i++){
cout<<arr[i]<<" ";
}
return 0;
}
以空格分隔的10个整数
使用冒泡排序和指针两种方式对一组有10个数的数据进行排序的代码如下:
#include <stdio.h>
void bubbleSort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void printArray(int arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void sortIntArrayWithPointer(int *arr, int len) {
int *p, *q, temp;
for (p = arr; p < arr + len - 1; p++) {
for (q = p + 1; q < arr + len; q++) {
if (*p > *q) {
temp = *p;
*p = *q;
*q = temp;
}
}
}
}
int main() {
int array[] = {10, 6, 9, 3, 5, 2, 7, 1, 4, 8};
int len = sizeof(array) / sizeof(array[0]);
printf("Before sorting: ");
printArray(array, len);
bubbleSort(array, len);
printf("After bubble sort: ");
printArray(array, len);
sortIntArrayWithPointer(array, len);
printf("After sorting with pointer: ");
printArray(array, len);
return 0;
}
代码中定义了一个 bubbleSort
函数来实现冒泡排序,这个函数接收一个数组和数组的长度,然后按照冒泡排序的思想对数组进行排序。
同时,还定义了另一个函数 sortIntArrayWithPointer
,这个函数接收一个整型数组指针 arr
和数组长度 len
,也用指针方式来实现排序。首先在外层循环中遍历除最后一个元素外的所有元素,内层循环中遍历 p 后面的所有元素,如果 p 所指的元素的值大于 q 所指的元素的值,就交换它们的位置。
在 main
函数中,我们定义了一个整型数组,然后先输出数组中的元素,再调用 bubbleSort
函数和 sortIntArrayWithPointer
函数进行排序并输出排序后的结果。最后返回 0 表示程序运行正常结束。