选择排序
从第一个元素开始,跟后面所有元素比较,找出最值,放在第一个元素的位置
然后用第二个元素跟后面所有元素比较,找出最值,放在第二个元素的位置
然后用第三个元素跟后面所有元素比较,找出最值,放在第三个元素的位置
以此类推
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 使用选择排序对一个无序数组进行排序
int nums[10] = {5, 2, 5, 8, 9, 6, 7, 23, 56, 2};
int lenght = sizeof(nums) / sizeof(nums[0]);
printf("lenght --> %i\n", lenght);
for (int i = 0; i < lenght - 1; i++) {
// printf("i --> %i --> ", i);
for (int j = i + 1; j < lenght; 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");
}
return 0;
}
冒泡排序
用相邻的两个元素进行比较,每完全比较一次,最值出现在末尾
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 使用冒泡排序对一个无序数组进行排序
int nums[10] = {5, 2, 5, 8, 9, 6, 7, 23, 56, 2};
int lenght = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < lenght - 1; i++) {
// printf("i --> %i --> ", i);
for (int j = 0; j < lenght - 1 - i; j++) {
// printf("*");
printf("i --> %i j --> %i\n", j, j+1);
if (nums[j] < nums[j + 1]) {
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
printf("\n");
}
return 0;
}