초보 학 프로 그래 밍 의 세 가지: 세 가지 가장 기본 적 인 정렬 알고리즘 의 실현 (거품 정렬, 정렬 선택, 직접 정렬 삽입)

2547 단어 C/C++
학습 한 후에 세 가지 가장 기본 적 인 정렬 알고리즘 을 실현 합 니 다. 나중에 어디 에 사용 할 수 있 을 지 모 르 겠 지만 먼저 익 혀 보 세 요. 다음은 실현 알고리즘 과 테스트 코드 를 제시 합 니 다.
박문 참고:http://blog.csdn.net/hguisu/article/details/7776068
http://blog.csdn.net/cjf_iceking/article/details/7916194
#include
#include
#include

//bubble sort method
void bubbleSort(int *srcData, int len)
{
	int i,j;
	int temp;
	for(i = 0; i < len-1; i++)
	{
		for(j = 0; j< len - i -1 ; j++)
		{
			if(srcData[j] > srcData[j + 1])
			{
				temp = srcData[j];
			srcData[j] = srcData[j + 1];
			srcData[j + 1] = temp;
			}
		}
	}
}

//select sort method
void selectSort(int srcData[], int len)
{
	int i,j;
	int temp; //save the temporary number
	int index; //the index for finding the minimum number in the array
	for(i = 0; i < len - 1; i++)
	{
		index = i;
		for(j = i+1; j < len; j++)
			if(srcData[index] > srcData[j]) //find the minimum index
			{
				index = j;
			}
			if(index != i) //swap 
			{
				temp = srcData[index];
				srcData[index] = srcData[i];
				srcData[i] = temp;
			}
	}
}

//straight insert sort method
void inertSort(int srcData[], int len)
{
	int i,j;
	int temp;
	for(i = 1; i < len; i++)
	{
		//if the value of i is greater than the value of i-1,insert straightly;
		//otherwise, move the ordered list and then insert 
        if(srcData[i] < srcData[i-1]) 
		{              
            j= i-1;
            temp = srcData[i]; //save a temparary number which is waiting for being sorted
            srcData[i] = srcData[i-1];  //move back to one elemet  
            while(temp < srcData[j]) //find the insert position from the ordered list
			{   
                srcData[j+1] = srcData[j];  
                j--; //move back the elements  
            }  
            srcData[j+1] = temp; //insert into the right pisition
        }
	}
}

void main()
{
	int N = 10;
	srand((unsigned)time(NULL));
	int i,j;
	int *srcData = new int[N];
	printf("This is the original random data: 
"); for(i = 0; i < N; i++) { srcData[i] = rand()%100+1; printf("%d ",srcData[i]); } printf("
"); //bubbleSort(srcData,N); //selectSort(srcData,N); inertSort(srcData,N); printf("This is the sorted data:
"); for(i = 0; i < N; i++) { printf("%d ",srcData[i]); } printf("
"); system("pause"); }

주석 은 모두 영어 로 작성 되 었 으 니 비교적 상세 할 것 이다.잘못된 부분 이 있 으 면 벽돌 을 치 며 지적 해 주세요 ~

좋은 웹페이지 즐겨찾기