天天看点

(3~4):C实现数组选择排序3.选择排序4.选择排序提高:比而不换,只记下标

3.选择排序

#include<stdio.h>
#define N 10

int main()
{
    int arr[N]={1,-1,20,100,35,634,3,6,12,62};
    int t;
    for(int i=0;i<N-1;i++)
    {
        for(int j=i+1;j<N;j++)
        {
            if(arr[i]>arr[j])
            {
                t=arr[i];
                arr[i]=arr[j];
                arr[j]=t;
            }
        }
    }
    for(int i=0;i<10;i++)
    {
        printf("%d\n",arr[i]);
    }
    return 0;
}
           
(3~4):C实现数组选择排序3.选择排序4.选择排序提高:比而不换,只记下标

4.选择排序提高:比而不换,只记下标

#include<stdio.h>
#define N 30

int main()
{
	int arr[N];
	for(int i=0; i<N; i++)
	{
		arr[i]=rand()%100;
	}
	for(int i=0; i<N-1; i++)
	{
		int idx=i;
		for(int j=i+1; j<N; j++)
		{
			if(arr[idx]>arr[j])
				idx=j;
		}
		if(idx!=i)
		{
			arr[idx]^=arr[i];
			arr[i]^=arr[idx];
			arr[idx]^=arr[i];
		}
	}
	for(int i=0; i<N; i++)
	{
		printf("%d\n",arr[i]);
	}
}
           
(3~4):C实现数组选择排序3.选择排序4.选择排序提高:比而不换,只记下标

附:C中的异或运算符^知识点

(3~4):C实现数组选择排序3.选择排序4.选择排序提高:比而不换,只记下标

继续阅读