冒泡排序
冒泡
java 实现
public static int[] sort(int[] arr){
for (int i = arr.length; i > 0 ; i--) {
// 小小的优化,如果flag在一次遍历之后还是false,说明数组本来就是有序的,根本不需要排序,直接break就可以了
boolean flag = false;
for (int j = 0; j < i - 1; j++) {
if(arr[j] > arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j+1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
return arr;
}
C 实现
void bubbleSort(int* nums, int numsSize){
for (size_t i = numsSize; i > 0; i--)
{
int flag = 0;
for (size_t j = 0; j < i - 1; j++)
{
if (nums[j] > nums [j + 1])
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
flag = 1;
}
}
if (!flag)
{
printf("%d",i);
break;
}
}
}
选择排序
选择
java 实现
private static int[] sort(int[] arr){
for (int i = 0; i < arr.length - 1; i++) {
int index = i;
for (int j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[index]){
index = j;
}
}
if(index != i){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
return arr;
}
C 实现
void selectSort(int* nums, int numsSize){
for (size_t i = 0; i < numsSize; i++)
{
int index = i;
for (size_t j = i + 1; j < numsSize; j++)
{
if (nums[j] < nums[index])
{
index = j;
}
}
if (index != i)
{
int temp = nums[i];
nums[i] = nums[index];
nums[index] = temp;
}
}
}
网友评论