pragma mark 冒泡排序
pragma mark 概念
/*
#pragma 冒泡排序
特點:
是用相鄰的兩個元素進行比較,每完全比較完一次,最值出現在末尾 // 第一次得到最大的值
// 每次都是從0開始
規律:
比較次數
****
***
**
*
*/
pragma mark 代碼
#include <stdio.h>
int main()
{
#pragma mark 已知一個無序的數組,里面有5個元素,要求對數組進行排序
int nums[5] = {99,12,88,11,22};
#pragma mark 選擇排序
/*
for (int i = 0; i < length - 1 ; i++) {
for (int j = i; j< length - 1; j++) {
// printf("*");
printf("i = %i, j = %i\n ",i ,j); //選擇排序重點: 第一個數 和 所有的元素進行比較
// 區別
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
// printf("\n");
}
*/
#pragma mark 排序前
// 動態獲取數量
int length = sizeof(nums)/sizeof(nums[0]);
for (int i = 0; i < length; i++) {
printf("nums[%i] = %i\n",i, nums[i]);
}
#pragma mark 冒泡排序
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - 1 - i; j++) {
// printf("*");
// 獲取相鄰索引
printf("%i == %i \n",j,j+1); // 冒泡排序重點 : 每相鄰數進行比較
// 區別
if (nums[j]>nums[j+1]) {
// 第三變量 保存第一個變量先
int temp = nums[j];
// 將 第二個數 賦值給 第一個數
nums[j] = nums[j+1];
// 再講 第三變量 賦值給 第二個數
nums[j+1] = temp;
}
}
#pragma mark 之前學習的
/*
for (int j = i; j < 4; j++) {
// printf("*");
// 獲取相鄰索引
printf("%i == %i \n",j,j+1);
}
*/
// printf("\n");
}
printf("-------------\n");
#pragma mark 排序后
// 動態獲取數量
for (int i = 0; i < length; i++) {
printf("nums[%i] = %i\n",i, nums[i]);
}
return 0;
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。