arr[]={9,5,2,7}
比如这里我们想要将数组里的数据从小到大排序,遍历数组,比较前后两个数字的大小,如果前面小后面大无需交换顺序,前面大后面小则需要交换顺序,然后继续遍历
我们在这里设置一个 bound 边界
[0,bound) 为已排序区间
[bound,size) 为待排序区间
当bound 含盖整个数组,排序结束
void Swap(int* x, int* y){
int tmp = 0;
tmp=*x;
*x = *y;
*y = tmp;
}
void Bubblesort(int* arr, int size){
//每次找最小的方式
//[0,bound)已排序区间
//[bound,size)待排序区间
for (int bound = 0; bound < size; bound++){
//循环执行一次,bound+1
//此时找到一个比较小的值,并放到合适位置;
for (int cur = size - 1; cur>bound; cur--){
//完成一趟找最小的过程
if (arr[cur - 1] > arr[cur]){
//升序排序
Swap(&arr[cur - 1], &arr[cur]);
}
}
}
}
int main(){
int arr[4] = { 9, 5, 2, 7 };
int size = sizeof(arr) / sizeof(arr[0]);
Bubblesort(arr, size);
for (int i = 0; i < size; i++){
printf("%d ", arr[i]);
}
system("pause");
return 0;
}