用于将一个数组的数据从低往高排序

/*
冒泡排序,n个数
第一个for循环是第几次归为元素,每次只能归位一个数到末尾,,执行n-1次(只需要排这么多次就拍好了,最后一个不用排) 
第二个for循环将数字两两比较找到最大数字放在最后,执行 n-1-已经归好位的元素个数 次 
 */
void bubble_sort(int arr[]) {
    int i, j, temp;
    int len = (int) sizeof(arr) / sizeof(*arr);
    for (i = 0; i < len - 1; i++)//第一轮,从0到len - 1有len - 1次,因为排len个数只用len-1次
        for (j = 0; j < len - 1 - i; j++)//第二轮 ,减去排好的数
            if (arr[j] > arr[j + 1]) {//如果 j号元素比下一个元素大 
                temp = arr[j];//设置临时变量为 j元素 
                arr[j] = arr[j + 1];//把j+1元素值赋给j号元素 
                arr[j + 1] = temp;//把刚刚j号元素值赋给j+1号元素
                //即把 j号元素和下一个元素 换位  以此类推将把这个元素推到最后 
            }
}

选择排序

void selection_sort(int a[], int len) 
{
    int i,j,temp;
 
    for (i = 0 ; i < len - 1 ; i++) 
    {//从0到len - 1有len - 1次,因为排len个数只用len-1次
        int min = i;                  // 记录最小值,第一个元素默认最小
        for (j = i + 1; j < len; j++)     // 访问未排序的元素
        {
            if (a[j] < a[min])    // 找到目前最小值
            {
                min = j;    // 记录最小值
            }
        }
        if(min != i)
        {
            temp=a[min];  // 交换两个变量
            a[min]=a[i];
            a[i]=temp;
        }
//交换
    }
}
Last modification:December 6, 2022
如果觉得我的文章对你有用,请随意赞赏