冒泡排序的思想是 1:每次排序将最大的值,移动到最后一位 2:每次排序一次后,末尾的就不用再次排序了 3:加上一个flag进行优化,如果本生就是有序的,直接跳出循环
时间复杂度: 有序数组:O(n) 无序数组: O(n^)
空间复杂度 O(1)
void BubbleSort(int* nums, int numsSize)
{
int i,j;
for(i = numsSize-1;i>=0;i--) {
// 优化,假如数组本生就是有序的
int flag = 0;
for(j=0;j<i;j++) {
if(nums[j] > nums[j+1]) {
flag = 1;
swap(&nums[j],&nums[j+1]);
//int temp = nums[j];
//nums[j] = nums[j+1];
//nums[j+1] = temp;
}
}
if(flag == 0) {
break;
}
}
}
void swap(int* a,int* b) {
// a是一个指针,*a就只这个指针对应的值
int t = *a;
*a = *b;
*b = t;
}
int main() {
int x;
int num[] = {5,4,3,2,1};
BubbleSort(num,5);
for(x=0;x<5;x++) {
printf("index=%d,value=%d\n",x,num[x]);
}
return 0;
}